最好是覆盖navigationController的导航栏属性

时间:2010-05-30 21:01:05

标签: iphone uinavigationcontroller uinavigationbar subclassing

我正在覆盖UINavigationController以使用我自己的navigationBar子类的实例替换默认的UINavigationBar属性。所以我试过像

这样的东西
_navigationBar = [[SBNavigationBar alloc] init];

在我的-initWithRootViewController:中。但这并没有像我预期的那样有效。仍然显示默认的navigationBar

那么覆盖navigationBar的最佳点是什么?

提前致谢
-f

1 个答案:

答案 0 :(得分:1)

如果查看文档http://developer.apple.com/iphone/library/documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html,您会看到 navigationBar 属性只读

要拥有自定义navigationBar,您可以使用类别。您将在 stackoverflow 上找到许多回答此问题的问题。

一个简单的版本是将图像放在 drawRect:中,就像这样......

@implementation UINavigationBar (Custom)

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"bg_toolbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end