我正在编写一个在 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
谢谢你。