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
ありがとうございました。