iOS UINavigationController添加左右按钮不显示问题解决方案

一。场景模拟

我们有一个UINavigationController和一个UIViewController,在程序启动时初始化这两个,代码如下

HomeViewController *homeCon = [[HomeViewController alloc] init];  // 初始化uiviewcontroller
UINavigationHomeBar *homeNavigation = [[UINavigationHomeBar alloc] initWithRootViewController:homeCon];            // 初始化uinavigationcontroller

接下来,当我们在uinavigationcontroller中加入左右按钮时没有效果,代码如下

// 这个是uinavigationcontroller的viewdidload中
UIBarButtonItem *bill = [[UIBarButtonItem alloc] initWithTitle:@"账单" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.rightBarButtonItem = bill;

运行看不见按钮

二。问题解决

  1. 先查看navigationitem的说明

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

说:在程序有需要时才创建,若有一个viewcontroller则可能屏蔽当前navigation中的item


2.解决方法

既然uinavigationcontroller中的item不能用,就需要使用uiviewcontroller中的item

即将创建按钮写入到uiviewcontroller的viewdidload中

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.title = @"标题";
    
    // 添加账单按钮
    UIBarButtonItem *bill = [[UIBarButtonItem alloc] initWithTitle:@"账单" style:UIBarButtonItemStylePlain target:nil action:nil];
    self.navigationItem.rightBarButtonItem = bill;
}

三。navigation左右按钮颜色与标题颜色不一样的解决方案

在navigation的viewdidload中加入一句

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

即可


文章来自:http://my.oschina.net/littleDog/blog/467599
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3