我有一个显示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;
)然而,这也不起作用。
实现我想做的事情的正确方法是什么?
答案 0 :(得分:0)
如果您的tabBarController
位于导航控制器中,则需要从该导航控制器获取对它的引用。它可以作为导航控制器'viewControllers
属性中的第一个对象(或者,如果没有其他控制器被推送到导航控制器上,则为topViewController
属性)。替换:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
使用:
UINavigationController *navCtrl = (UINavigationController *)self.window.rootViewController;
UITabBarController *tabBarController = (UITabBarController *)navCtrl.viewControllers[0];