//设置标题 self.navigationItem.title = @"我是导航栏";
//设置标题颜色 self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor grayColor]};
self.navigationItem.title = @"详情界面"; //修改标题颜色 使用字典 . self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor redColor]};
以上是我设置两个界面的navigationItem.title 为什么点击导航控制器的右侧按钮返回后,第一个title的颜色和下一个的一样了呢?也变为红色的。刚开始运行是灰色的,只要操作进入返回就这样了。
右侧按钮设置:
//设置右侧按钮 UIBarButtonItem *rightBarBtnItem = [[UIBarButtonItem alloc] initWithTitle:@"右侧bar按钮" style:UIBarButtonItemStylePlain target:self action:@selector(myAddAction:)];
进入下一个页面用的方法是:
-(void)myAddAction:(UIBarButtonItem *)sender { //初始化将要跳转到的视图控制器 DetailViewController *detailVc = [[DetailViewController alloc] init]; [self.navigationController pushViewController:detailVc animated:YES];
返回用的回调方法是:
-(void)back { [self.navigationController popViewControllerAnimated:YES]; }
//设置标题 self.navigationItem.title = @"我是导航栏"; //设置标题颜色
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor grayColor]};
将设置导航栏标题和标题文本属性的代码放置到控制器viewWillAppear方法中。
谢谢了,放到viewWillAppear方法中就好了,但这个是什么原理呢?
@我就是一种相逢: 这里涉及到一个页面的生命周期,在页面第一次加载的时候会调用viewDidLoad方法,之后调用viewWillAppear,当从下一个页面导航返回时,它只会再次调用viewWillAppear。由于你在第二个页面改变了导航栏标题属性,所以在返回第一个页面时需要重新设置导航栏标题属性,因此只能放在viewWillAppear方法中。
@Jerry Tong: 谢谢,知道了。