iOS关于self.title的大坑

当你有四个控制器作为UITabBarController的根视图控制器的时候,并且每个控制器都为UINavigationController的根视图控制器,这时候在控制器中调用self.title=@"",大坑就出现了,你会发现你的tabBarItem title变成了你在控制器里设置的导航栏的title.

设置title的原理

self.navigationItem.title = @"my title";// sets navigation bar title.(只设置导航控制器标题)
self.tabBarItem.title= @"my title";//sets tab bar title.(只设置底部四大金刚标题)
self.title= @"my title";// sets both of these.(两者都会设置,并且只要你调用会覆盖上面两者设置的值)

so

1.是你分开设置 底部用self.tabBarItem.title 头部用self.navigationItem.title 不去调用self.title

2. 继承uitabbarcontroller 并遵循代理实现以下代理方法

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
    yourNavigationController.tabBarItem.title = @"Tab Bar Title";
    ...
}
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    your
        NavigationController.tabBarItem.title = @"Tab Bar Title";
    }

其原理就是在你每次点击切换控制器的时候都去重新设置tabBarItem.title

你可能感兴趣的:(iOS关于self.title的大坑)