在以编程方式创建UITabBarController时检索最后一个(第6个)选项卡项时崩溃

时间:2015-04-25 07:59:49

标签: ios uitabbarcontroller

- (void)setUpTabBarItems {

    NSMutableArray *itemsArray = [@[] mutableCopy];

    UITabBarItem *firstTabBarItem = self.tabBarController.tabBar.items[0];
    UITabBarItem *secondTabBarItem = self.tabBarController.tabBar.items[1];
    UITabBarItem *thirdTabBarItem = self.tabBarController.tabBar.items[2];
    UITabBarItem *fourthTabBarItem = self.tabBarController.tabBar.items[3];
    UITabBarItem *fifthTabBarItem = self.tabBarController.tabBar.items[4];
    UITabBarItem *sixthTabBarItem = self.tabBarController.tabBar.items[5];

}

我在UITabBarController中以编程方式创建AppDelegate。我在此方法之前为标签栏控制器设置了6个视图控制器。在上面的方法中,我打算设置标签栏项的图像和标题。

最后一行发生了崩溃,即检索UITabBar项目数组的第6项。

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

我知道标签栏不会超过6个项目,所以我希望最后一个按钮是More标签栏项目。但我无法检索它。

但是当我在UITabBarController中制作Storyboard时,它可以使用许多按钮。 (在这种情况下,最多6个,我不需要更多)

所有想法?

1 个答案:

答案 0 :(得分:0)

如您所知,如果添加超过5个标签UITabBarController仅显示前四个项目,则将标准更多项目添加为第5个标签。 items数组不会包含超过5个项目,因此如果您尝试访问超过4的索引(在这种情况下是更多选项卡的索引),它将明显崩溃。

如果您需要在“更多”标签上执行操作(例如,选择此标签),则可以使用UITabBarController的{​​{1}}属性。