修改UINavigationController返回按钮的标题及如何隐藏导航栏

在有导航栏的controller中,如两个controller,分别为conA和conB。在A跳往B后,
没有在conA中设置

self.title = @"第一页";

这样的,那么在B中的返回按钮的标题是默认的,为“Back”。如下

若在conA设置了

self.title = @"第一页";

那么在B中返回按钮的标题就是A的title,如下

若A的title短点还能接受,若很长,就会很不美观。现在的问题就是在A中已设置title的情况下,如何改变导航条返回按钮标题。
在B中设置

self.navigationItem.backBarButtonItem.title = @"返回";

这样是没效果的,因为backBarButtonItem是UIBarButtonItem类,它只会在下一级controller起作用。换句话说,若在B中设置,B再跳往C,C中的标题才会改变。所以现在可以在A中设置,才会在B中起作用。

并且在A中直接设置是无效的,如下

self.navigationItem.backBarButtonItem.title = @"返回";

必须重新定义新的UIBarButtonItem赋值才可以。

//正确的写法
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] init];
self.navigationItem.backBarButtonItem = barItem;
barItem.title = @"什么鬼";

 

效果如下:

 

隐藏导航栏

有两个controller,分别为A和B,A中又导航栏,若想在B中隐藏导航栏,那么在B的viewDidLoad中

self.navigationController.navigationBarHidden = YES;

这样是实现了效果,但返回A后,A中的导航栏也消失了。在A的viewDidLoad中设置

self.navigationController.navigationBarHidden = NO;

还是没有效果。
原因在于方法调用不对,应写在viewWillAppear才会有效果。
在A中

-(void)viewWillAppear:(BOOL)animated{
    self.navigationController.navigationBarHidden = NO;
}

 

转载于:https://www.cnblogs.com/Apologize/p/4785596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值