0

私は長い間グーグルしていますが、解決策が得られません.iOS 5.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;
}

前もって感謝します

4

1 に答える 1

1

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

  1. アプリ デリゲート ファイルで、初期ビュー コントローラーの 1 つを UISplitViewControllerDelegate に設定する必要があります。ここでこれを行わないと、縦向きでアプリを起動したときに最初のボタンが表示されません。例えば:

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

    @interface MyMasterVC : UIViewController <UISplitViewControllerDelegate>

  3. MyMasterVC.mでは、Apple のドキュメントで説明されている UISplitViewControllerDelegate のさまざまなメソッドを実装する必要があります。

ビュー コントローラーを非表示および表示するメソッドは、詳細ビュー コントローラー (たとえば、UIToolBar または UINavigationBar) に追加または削除する必要がある UIBarButtonItem を提供します。

これに対処するのに問題がある場合は、スタンフォード大学の優秀な Paul Hegarty による iTunesU の講義の 1 つ (2010 年または 2011 年秋 - 覚えていません) でかなり詳しく説明されています。実際に見てみるべきです。iOS5.1 では、マスター VC の表示方法がコース内の厳密な「ポップオーバー」方法から変更されましたが、記載されている方法は引き続き機能すると思います。コースのかなり早い段階で、おそらく講義 5、6、7 などです。Split Views、またはiPad Split Viewsなどと呼ばれていると思います。

編集: 講義 7 で、「UIToolbar と iPad アプリ」と呼ばれています。

于 2012-10-03T12:53:21.940 に答える