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]'
这里有什么问题?
答案 0 :(得分:0)
我怀疑问题可能是那个
NSArray *myViewControllers = tabBarController.viewControllers;
返回UIViewController
s的数组(正如我认为的那样),但你的for循环正在寻找UINavigationController
s。
我不知道您尝试使用该循环,因为您没有为任何事情分配或使用[navViewController.topViewController view];
,但是如果您想要访问{{1}中视图控制器的视图1}}数组,使用:
myViewControllers