在应用程序启动(崩溃)时无法预加载UITabBar选项卡

时间:2014-03-07 03:10:33

标签: ios uinavigationcontroller rss uitabbarcontroller uitableview

RSS新闻阅读器中有8个标签。每个选项卡链接到一个导航控制器,该控制器链接到一个包含表视图的masterViewController。我试图遍历所有选项卡以在启动时预加载其表数据。我在appDelegate didFinishLaunchingWithOptions方法中尝试了下面的代码:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers)
{
    [navViewController.topViewController view];
}

但是,每当我启动应用程序时,都会收到以下错误消息:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI       
objectAtIndex:]: index 2147483647 beyond bounds [0 .. 7]'

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

我怀疑问题可能是那个

NSArray *myViewControllers = tabBarController.viewControllers;

返回UIViewController s的数组(正如我认为的那样),但你的for循环正在寻找UINavigationController s。

我不知道您尝试使用该循环,因为您没有为任何事情分配或使用[navViewController.topViewController view];,但是如果您想要访问{{1}中视图控制器的视图1}}数组,使用:

myViewControllers