我正在编写在iPhone 6上运行的应用程序,并使用UISplitViewController,如下所示:
当我在iPhone 6 plus上纵向测试时,不会显示DetailView。如果我打开Table2View然后我改为横向,左边的Table1View显示和右边的Table2View显示。 我想要左边的Table2View显示和右边的DetailView显示。我该怎么办?
解决方案:我在此处找到了解决方案:UISplitViewController Rotation Master Master on iPhone 6 Plus。这是我的代码:
- (UIViewController *)splitViewController:(UISplitViewController *)splitViewController
separateSecondaryViewControllerFromPrimaryViewController:(UIViewController *)primaryViewController {
if ([primaryViewController isKindOfClass:[UINavigationController class]]) {
UIViewController *topViewController = [(UINavigationController *)primaryViewController topViewController];
if ([topViewController isKindOfClass:[Table2ViewController class]]) {
return [topViewController.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
}
}
return nil;
}
但现在我得到了其他问题。使用以下代码:
return [topViewController.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
该应用将显示如下:
如果现在我将应用更改为肖像,则在运行此代码后会崩溃(返回NO):
- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
if ([secondaryViewController isKindOfClass:[UINavigationController class]] && [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]] && ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] item] == nil)) {
// Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
return YES;
}
else {
return NO;
}
}
我认为问题是添加的DetailViewController无效。我该如何解决?
解决方案:我也解决了这个问题。这是一个完美的样本:https://developer.apple.com/library/prerelease/ios/samplecode/AdaptivePhotos/Introduction/Intro.html#//apple_ref/doc/uid/TP40014636
谢谢。
答案 0 :(得分:0)
如果您希望UISplitViewController
管理的两个视图控制器在任何方向都可见,则需要将其preferredDisplayMode
设置为UISplitViewControllerDisplayModeAllVisible
。
对于视图控制器层次结构的设置,看起来您可能会将视图控制器与视图混淆。如果您希望两个简单的UITableViews
彼此相邻,为什么不同时使UITableViewController
的主视图和详细视图控制器实例,而不是尝试在UITableViewController
中嵌入UIViewController
} S'
使用您的符号和类,这将是这样的:
UISplitViewController --masterview--> Table1ViewController
UISplitViewController --detailview--> Table2ViewController
注意:" segue"意味着"过渡。" segue将确定用户从一个视图控制器到下一个视图控制器的方式;它没有描述一个视图控制器如何嵌入另一个视图控制器。