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

当我们用一个uiviewController初始化一个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]];

即可

猜你喜欢

转载自iaiai.iteye.com/blog/2292286