我正在尝试在 应用程序didFinishLaunchingWithOptions: 方法中引用我的 detailViewController 。但在这里我遇到了一个问题。
我的下一个视图结构是 storyBoard (对于 iPad ):
UISplitViewController - > UINavigationController - > UITableViewController - >的 detailViewController
我在 UITableViewControllerCell 和 detailViewController
之间创建了带有“ push ”样式的segue屏幕截图:http://picturepush.com/public/13071076
我正试图以这种方式引用 detailViewController :
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
DetailViewController *detailViewController = [navigationController.viewControllers lastObject];
但结果我参考了我的 UITableViewController ,而不是可接受的 的 DetailViewController 即可。 navigationController.viewControllers计数是1,但应该有2(我想是这样)。
我希望得到你的帮助。
答案 0 :(得分:0)
由于您使用 push 样式创建了segue,因此只有在点击表格视图单元格后才会加载detailViewController。它不会加载到应用didFinishLaunchingWithOptions
方法。
我建议你尝试将detailViewController作为表视图控制器中的属性。
@property (nonatomic, strong) UIViewController *detailViewController;
然后在您的app didFinishLaunchingWithOptions方法中,您可以访问该属性:
UITableViewController *tableViewController = [navigationController.viewControllers lastObject];
DetailViewController *detailViewController = tableViewController.detailViewController;
但是你需要避免使用执行segue函数,并在需要时使用通常的pushViewController
方法推送详细视图控制器。
[self.navigationController pushViewController:self.detailViewController animated:YES];