使用故事板从 appdelegate 访问视图控制器

2024-01-25

我已经遵循了 Ray Wendelich 教程RayWenderlich 教程 Tabbarcontroller 使用故事板 http://www.raywenderlich.com/50308/storyboards-tutorial-in-ios-7-part-1

只需查看故事板图像即可。 Ray 正在使用以下代码访问“玩家视图控制器”

 UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController = [tabBarController viewControllers][0];
PlayersViewController *playersViewController = [navigationController viewControllers][0];

当我尝试使用以下代码访问playerDetailsViewController 时,我遇到了崩溃。传达讯息

收视率[2630:60b]* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*-[__NSArrayI objectAtIndex:]: 索引 1 超出范围 [0 .. 0]' *** 首先抛出调用堆栈: (0x30b49e83 0x3aea66c7 0x30a7fff9 0x3ddd1 0x3333eaad 0x3333e4f3 0x33338b41 0x332d3a07 0x332d2cfd 0x33338321 0x357b876d 0x357b835 7 0x30b14777 0x30b14713 0x30b12edf 0x30a7d471 0x30a7d253 0x333375c3 0x33332845 0x3e0fd 0x3b39fab7) libc++abi.dylib:以 NSException 类型的未捕获异常终止

代码

UITabBarController *tabBarController =
(UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController =
[[tabBarController viewControllers] objectAtIndex:0];
PlayersViewController *playersViewController =
[[navigationController viewControllers] objectAtIndex:0];

UINavigationController *nav=[[navigationController viewControllers]objectAtIndex:1];
PlayerDetailsViewController *playerdetailsviewcontroller=[[nav viewControllers]objectAtIndex:0];

我也尝试了下面的代码,

UITabBarController *tabBarController =
(UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController =
[[tabBarController viewControllers] objectAtIndex:0];
PlayersViewController *playersViewController =
[[navigationController viewControllers] objectAtIndex:0];
PlayerDetailsViewController *playerdetailsviewcontroller=[[navigationController viewControllers]objectAtIndex:1];

我在哪里收到消息崩溃

'NSRangeException',原因:'*** -[__NSArrayI objectAtIndex:]:索引 1 超出范围 [0 .. 0]'

The storyboard image enter image description here

基本上我想从appdelegate访问PlayerdetailsViewcontroller。 我想我错过了一些东西,有什么想法吗?


您的应用程序在这里崩溃(objectAtIndex:1):

UINavigationController *nav = [[navigationController viewControllers] objectAtIndex:1];
PlayerDetailsViewController *playerdetailsviewcontroller = [[nav viewControllers]objectAtIndex:0];

发生这种情况是因为naviationController只有 1 个子视图 (PlayersViewController)。如果不实例化,您就无法进一步深入故事板PlayerDetailsViewController within PlayersViewController通过 Segue。

EDIT您只能访问ViewControllers最初是可见的(通过UITabBarController).

我也不明白你为什么要添加另一个UINavigationController to the PlayersViewController。如果您连接PlayersViewController to PlayerDetailViewController与 SeguenavigationController将被重用(这是正确的方法)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用故事板从 appdelegate 访问视图控制器 的相关文章

随机推荐