首页 新闻 搜索 专区 学院

IOS中导航控制器为什么从leftBarButtonItem进入到下一个页面的返回后颜色会变得和下一页的一样?

0
[待解决问题]
    //设置标题
    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];
}

 

我就是一种相逢的主页 我就是一种相逢 | 菜鸟二级 | 园豆:204
提问于:2016-01-23 22:04
< >
分享
所有回答(1)
1
//设置标题
self.navigationItem.title = @"我是导航栏";
//设置标题颜色 
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor grayColor]};

将设置导航栏标题和标题文本属性的代码放置到控制器viewWillAppear方法中。

Jerry Tong | 园豆:385 (菜鸟二级) | 2016-01-24 16:19

谢谢了,放到viewWillAppear方法中就好了,但这个是什么原理呢?

支持(0) 反对(0) 我就是一种相逢 | 园豆:204 (菜鸟二级) | 2016-01-25 19:39

@我就是一种相逢: 这里涉及到一个页面的生命周期,在页面第一次加载的时候会调用viewDidLoad方法,之后调用viewWillAppear,当从下一个页面导航返回时,它只会再次调用viewWillAppear。由于你在第二个页面改变了导航栏标题属性,所以在返回第一个页面时需要重新设置导航栏标题属性,因此只能放在viewWillAppear方法中。

支持(1) 反对(0) Jerry Tong | 园豆:385 (菜鸟二级) | 2016-01-25 22:27

@Jerry Tong: 谢谢,知道了。

支持(0) 反对(0) 我就是一种相逢 | 园豆:204 (菜鸟二级) | 2016-01-27 20:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册