zoukankan      html  css  js  c++  java
  • 修改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;
    }
  • 相关阅读:
    CentOS/Ubuntu安装最新的gcc-9
    CentOS 7 源码安装 CMake 3.16.2 最新稳定版。解决 cmake: command not found 问题
    堆排序
    linux可重入、异步信号安全和线程安全
    目录
    教程文档
    推荐文章
    学习文档
    开发工具-索引
    同步/异步/阻塞/非阻塞
  • 原文地址:https://www.cnblogs.com/Apologize/p/4785596.html
Copyright © 2011-2022 走看看