zoukankan      html  css  js  c++  java
  • navigationItem与navigationController关系

    在Appdelegate中这样设置后

    ViewController *vc = [[ViewController alloc]init];
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
    self.window.rootViewController = nav;

    然后在ViewController中有这样的

    可以看出navigationItem和navigationController是平级的
    但如下写又有

    但实际上UINavigationtroller并没有navigationItem这样直接的一个属性,因为UINavigationtroller继承自UIViewController,而UIViewController是有navigationItem这个属性的,所以才会出现如上的情况。
    因此如下设置是没有效果的。

    self.navigationController.navigationItem.title = @"这是没有效果的";

    正确的是

    self.title = @"";

    self.navigationItem.title = @"大王";

    这两个是等价的。

    //修改导航栏上左右按钮的字体颜色
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //修改导航栏背景色
    self.navigationController.navigationBar.barTintColor = [UIColor purpleColor];
    
    //设置导航栏左右按钮    
    UIBarButtonItem *leftBar = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *rightBar = [[UIBarButtonItem alloc]initWithTitle:@"下一页" style:UIBarButtonItemStylePlain target:self action:@selector(goToNewController)];
    self.navigationItem.leftBarButtonItem = leftBar;
    self.navigationItem.rightBarButtonItem = rightBar;

    效果如下:

    修改导航栏背景或左右按钮颜色

    ①单独设置某一按钮颜色,可以用

    self.navigationItem.rightBarButtonItem.tintColor = [UIColor blackColor];

    ②统一修改左右按钮颜色

    self.navigationController.navigationBar.tintColor = [UIColor redColor];

  • 相关阅读:
    并发与高并发(七)-线程安全性-原子性-atomic
    并发与高并发(六)-并发模拟代码
    springboot跨域请求接口示例
    关于Java编码规范
    并发与高并发(五)-并发模拟的三个工具
    springboot整合redis简单示例
    关于码云如何检出项目
    关于自动化打包部署Jenkins的使用和配置
    针对Oracle的一系列操作
    关于Linux下Oracle安装后启动的问题
  • 原文地址:https://www.cnblogs.com/Apologize/p/4998070.html
Copyright © 2011-2022 走看看