【问题标题】:iOS SplitView Controller, Programatically Change View With Multiple StoryboardsiOS 拆分视图控制器,以编程方式使用多个故事板更改视图
【发布时间】:2013-11-19 06:41:33
【问题描述】:
希望有人可以提供帮助。
我有一个使用UISplitViewController 的应用程序,但是我现在不得不开始使用多个storyboards,因为我有大量的views 并且Xcode 开始运行非常缓慢。我已将UIViewControllers 移动到多个storyboards。
Master View 是由静态单元格构建的,因此当用户选择单元格时,我通常会通过按下 segue 来更改 view。
我现在想知道如何以编程方式更改 UISplitViewController 的详细视图?
谢谢
【问题讨论】:
标签:
ios
storyboard
uisplitviewcontroller
ipad
【解决方案1】:
子类 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 始终显示主视图,所以我使用这个子类来防止主视图在纵向旋转时隐藏。