5つのsplitviewcontrollersを含むタブ付きアプリケーションがあります。SplitViewControllerがポートレート表示(ipad)でクラッシュする
ポートレートモードでは、「マスター」ボタンが期待どおりに表示され、最初の2つのコントローラーではボタンが期待どおりに動作します。 、/SourceCache/UIKit_Sim/UIKit-1914.84/_UIPopoverLayoutInfo.m:160 2012- - [:arrowDirection _ UISlidingPopoverLayoutInfo _popoverViewSizeForContentSize]
アサーション失敗:ただし、ボタンは次のメッセージでクラッシュを引き起こす最後の3つのタブに4月24日19:15:38.674 SMToolkit [12420:11303] *によりキャッチされない例外にアプリを終了 'NSInternalInconsistencyException'、理由: '_popoverViewSizeForContentSizeに渡さ不明方向:arrowDirection:'
シングは、5つのビューがあり、あります同じソースからカットアンドペーストされた、かなりAppleの定型文。私は実際にpopoversを絵コンテないんだけど、でもspliltviewcontrollerは理論的には「自由のために」私には彼らに与えますので、私は、prepareforsegue方法でそれらを持っているん
全5 splitviewcontrollersがUISplitViewControllerDelegate
に準拠appdelgateはそうのようなものです:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
//Person
UISplitViewController *personSplitViewController = [tabBarController.viewControllers objectAtIndex:1];
UINavigationController *personNavigationController = [personSplitViewController.viewControllers lastObject];
personSplitViewController.delegate = (id)personNavigationController.topViewController;
UINavigationController *personMasterNavigationController = [personSplitViewController.viewControllers objectAtIndex:0];
PersonMasterViewController *personController = (PersonMasterViewController *)personMasterNavigationController.topViewController;
personController.managedObjectContext = self.managedObjectContext;
//Scene
UISplitViewController *sceneSplitViewController = [tabBarController.viewControllers objectAtIndex:2];
UINavigationController *sceneNavigationController = [sceneSplitViewController.viewControllers lastObject];
sceneSplitViewController.delegate = (id)sceneNavigationController.topViewController;
UINavigationController *sceneMasterNavigationController = [sceneSplitViewController.viewControllers objectAtIndex:0];
SceneMasterViewController *sceneController = (SceneMasterViewController *)sceneMasterNavigationController.topViewController;
sceneController.managedObjectContext = self.managedObjectContext;
などなど、詳細ビュー・コントローラに続いてtabBarController
に正しいインデックスを置き換えて、それぞれが次ました(同じ、私がチェックする):
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"Master", @"Master");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}
上記の「人物」は予想通りに動作しますが、「シーン」によってクラッシュが発生します。
barbuttonitemをクリックしてストーリーボードに表示されないときに何が起こるかについて話しているものはどこにも表示されません。
アイデア?
これはどのようにしてこの仕事をするのですか?もしそうなら、どうですか?私はまったく同じエラーがあります。 –