UISplitViewController をサブクラス化し、ルート splitViewController をそのクラスに設定します。次に、このメソッドを UISplitViewController サブクラスに追加します。
-(void)setDetailControllerTo:(UIViewController *)detailController withNavControllerTitle:(NSString *)title {
[detailController view]; // this line forces the viewDidLoad method to be called
if (title) {
UINavigationController *navController = [[UINavigationController alloc] init];
[navController pushViewController:detailController animated:YES];
detailController.title = title;
NSArray *viewControllers=@[self.mainController.viewControllers[0],navController];
self.mainController.viewControllers = viewControllers;
} else {
NSArray *viewControllers=@[self.mainController.viewControllers[0],detailController];
self.mainController.viewControllers = viewControllers;
}
}
このメソッドを呼び出すには、マスター ビュー コントローラーから次のようにします。
FixedSplitViewController *splitController = (FixedSplitViewController*) self.splitViewController;
CurrentEventViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"CurrentEventViewController"];
// add any setup code here
[splitController setDetailControllerTo:controller withNavControllerTitle:@"Current Event"];
私のプロジェクトの多くでは、splitviewcontroller が常にマスター ビューを表示する必要があるため、このサブクラスを使用して、マスター ビューが縦向きの回転で隠れないようにしています。