我有一个带有NavigationController的故事板,它实现了我自己的NavigationViewController
这是我在NavigationViewController中使用的设置代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[self setNavigationStyle];
}
- (void) setNavigationStyle
{
self.navigationBar.backgroundColor = [[UIColor alloc]initWithRed:245 green:246 blue:247 alpha:1];
self.navigationBar.hidden = NO;
self.title = @"test";
UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
NSArray *actionButtonItems = @[shareItem, cameraItem];
self.navigationItem.rightBarButtonItems = actionButtonItems;
}
backgroundColor设置工作,并且导航控制器背景颜色被更改。但是当尝试添加按钮或标题时,它只是不影响导航栏。
我做错了什么?
更新:我已经实现了UiNavigtaionControlerDelegate:
- (void) setNavigationStyle: (UINavigationController *)navigationController
{
navigationController.navigationBar.backgroundColor = [[UIColor alloc]initWithRed:245 green:246 blue:247 alpha:1];
navigationController.navigationBar.hidden = NO;
UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
NSArray *actionButtonItems = @[shareItem, cameraItem];
navigationController.navigationItem.rightBarButtonItems = actionButtonItems;
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[self setNavigationStyle:navigationController];
}
还是不行
根据相似问题回答(相似问题)
虽然nav控制器有一个navigationItem,但它实际上从来没有使用。你应该重写导航控制器方法来推送视图控制器(或使用委托方法)来修改每个新推送的视图控制器的navigationItem。
实现UINavigationControllerDelegate和navigationController:willShowViewController:animated方法,然后修改navigationItem属性
试试这个,创建一个出口导航栏和导航项和删除标题,按钮,颜色等,在IB
- (void) setNavigationStyle
{
self.navigationBar.backgroundColor = [[UIColor alloc]initWithRed:245 green:246 blue:247 alpha:1];
self.navigationBar.hidden = NO;
self.navigationItem.title = @"test";
UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
NSArray *actionButtonItems = @[shareItem, cameraItem];
self.navigationItem.rightBarButtonItems = actionButtonItems;
}