xcode 自定义 UINavigationCotroller 不响应更改



我有一个带有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;
}

最新更新