USplitView iOS5.1でマスタービューをロードして非表示にする
-
13-12-2019 - |
質問
私は長い間グーグルしていますが、解決策を得ることはできません。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;
}
事前に感謝します
解決
私が理解しているように、これを行うための標準的な方法は次のとおりです:
アプリのデリゲートファイルでは、最初の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;
マイマスターで。hは、自分自身を宣言します...
<UISplitViewControllerDelegate>
インターフェイスを修正することにより、次のようになります。:@interface MyMasterVC : UIViewController <UISplitViewControllerDelegate>
マイマスターで。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アプリ」