当我们用一个uiviewController初始化一个uinavigationcontroller时,再次添加左右按钮但不显示,下面提供解决方案
一。场景模拟
我们有一个UINavigationController和一个UIViewController,在程序启动时初始化这两个,代码如下
接下来,当我们在uinavigationcontroller中加入左右按钮时没有效果,代码如下
运行看不见按钮
二。问题解决
1.先查看navigationitem的说明
说:在程序有需要时才创建,若有一个viewcontroller则可能屏蔽当前navigation中的item
2.解决方法
既然uinavigationcontroller中的item不能用,就需要使用uiviewcontroller中的item
即将创建按钮写入到uiviewcontroller的viewdidload中
三。navigation左右按钮颜色与标题颜色不一样的解决方案
在navigation的viewdidload中加入一句
即可
一。场景模拟
我们有一个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]];
即可