質問

私は長い間グーグルしていますが、解決策を得ることはできません。iOS5.1では、マスタービューは右スワイプで表示され、左スワイプで消えます。

詳細ビューのボタンクリックでマスタービューをロードしたいのですが、どのように可能ですか?

以下のコードは私のために働いています、マスタービューは非表示ですが、マスタービューの黒い画面サイズはマスタービューの代わりに残ります。

- (void)hideMaster:(BOOL)hide {

  AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication] delegate];
 UISplitViewController* spv = appDelegate.splitViewController;
 spv.delegate=self;
 self.hiddenMaster= hide;
 [spv willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
 [spv.view setNeedsLayout];     
 }


- (BOOL)splitViewController:(UISplitViewController*)svc shouldHideViewController: (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {

NSLog(@"Spv: I do %@show the master", (self.hiddenMaster?@"not ":@""));

return self.hiddenMaster;
}

事前に感謝します

役に立ちましたか?

解決

私が理解しているように、これを行うための標準的な方法は次のとおりです:

  1. アプリのデリゲートファイルでは、最初のView Controllerの1つをU I S P Litviewcontrollerdelegateに設定する必要があります。ここでこれを行わないと、アプリを縦向きで起動した場合、最初のボタンは表示されません。例えば:

    UINavigationController *masterNavigationController = [self.splitViewController.viewControllers objectAtIndex:0];
    MyMasterVC *master = [self.masterNavigationController.viewControllers objectAtIndex:0];
    self.splitViewController.delegate = master;
    
  2. マイマスターで。hは、自分自身を宣言します... <UISplitViewControllerDelegate> インターフェイスを修正することにより、次のようになります。:

    @interface MyMasterVC : UIViewController <UISplitViewControllerDelegate>

  3. マイマスターで。m u I S P Litviewcontrollerdelegateのさまざまなメソッドを実装する必要があります ここではAppleのドキュメントで説明されています

View controllerを非表示にして表示するメソッドは、詳細View Controller(たとえば、UIToolBarまたはUINavigationBar)に追加または削除する必要があるUIBarButtonItemを提供します。

それに対処するのに問題がある場合は、スタンフォード大学の優秀なPaul HegartyによるiTunesUに関する講義の1つでかなりよくカバーされています(2010年秋または2011年あなたは本当に見てみるべきです。iOS5.1では、コースの厳密な「ポップオーバー」の方法からMasterVCの表示方法が変更されましたが、説明されている方法はまだ機能すると思います。それはコースのかなり早い段階です、多分講義5または6または7またはそのような何か。私はそれが分割ビュー、またはiPad分割ビューまたは類似と呼ばれていると思います。

編集: 第7回講義では、:「UIToolbarとiPadアプリ」

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top