尝试更改UITabBar图标时接收NSException

时间:2014-10-26 18:31:37

标签: ios objective-c uitabbaritem unrecognized-selector

我有一个显示UITabBarController的UINavigationController。我正在尝试为标签栏添加自定义图标。我在AppDelegate.m didFinishLaunchingWithOptions中放置了以下代码:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];

tabBarItem1.selectedImage = [[UIImage imageNamed:@"iconSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem1.image = [[UIImage imageNamed:@"icon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem1.title = nil;

使用此代码,我收到以下NSException:

由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [UINavigationController tabBar]:无法识别的选择器发送到实例0x7faed26343e0'

我的假设是*tabBar以某种方式我需要通过UINavigationController访问tabBar。 (I.E. - UITabBar *tabBar = UINavigationController.tabBarController.tabBar;)然而,这也不起作用。

实现我想做的事情的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您的tabBarController位于导航控制器中,则需要从该导航控制器获取对它的引用。它可以作为导航控制器'viewControllers属性中的第一个对象(或者,如果没有其他控制器被推送到导航控制器上,则为topViewController属性)。替换:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

使用:

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