向UINavigationController子类添加自定义按钮

时间:2013-07-26 18:37:18

标签: ios ios6 uinavigationcontroller uinavigationbar uinavigationitem

我试图通过继承导航控制器来自定义NavigationBar。出于某种原因,我无法显示自定义按钮。我的设置很简单我有一个ViewController,它嵌入到导航控制器中,它使用我的自定义子类 NavController

@interface NavController ()

@end

@implementation NavController

- (void)viewDidLoad{
    [super viewDidLoad];

    UIImage *wlImage = [UIImage imageNamed:@"wl-icon.png"];

    UIButton *wlButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [wlButton setFrame:CGRectMake(0, 0, wlImage.size.width, wlImage.size.height)];
    [wlButton setBackgroundImage:wlImage forState:UIControlStateNormal];

    UIBarButtonItem *wlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:wlButton];
    wlButtonItem.tintColor = [UIColor blackColor];

    self.navigationItem.rightBarButtonItem = wlButtonItem;
    self.navigationBar.tintColor = [UIColor blackColor];
}

@end

当我尝试测试应用时,唯一可行的自定义就是色调。该按钮不会出现。

enter image description here

我想知道它是否与导航项有关。

可能是我的初始视图控制器在其自己的默认设置中覆盖了导航项吗?

1 个答案:

答案 0 :(得分:4)

虽然导航控制器有navigationItem,但它实际上从未使用过。您应该重写导航控制器方法以推送视图控制器(或使用委托方法)来修改推送的每个新视图控制器的navigationItem