【发布时间】:2012-05-25 23:21:09
【问题描述】:
我想继承UINavigationBar 以便我可以在其drawRect: 中进行自定义绘图。
这是我的代码:
导航控制器 (.h)
@interface CORENavigationController : UINavigationController
@property (strong, nonatomic) CORENavigationBar *customNavigationBar;
@end
导航控制器 (.m)
@implementation CORENavigationController
@synthesize customNavigationBar = _customNavigationBar;
- (UINavigationBar *)navigationBar {
if (![self customNavigationBar]) {
[self setCustomNavigationBar:[[CORENavigationBar alloc] init]];
}
return [self customNavigationBar];
}
导航栏 (.h)
@interface CORENavigationBar : UINavigationBar
@end
导航栏 (.m)
@implementation CORENavigationBar
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
}
问题是导航栏没有标题,例如我只能看到标准的蓝色背景。
我删除以下方法后,标题又回到了那里:
- (UINavigationBar *)navigationBar {
if (![self customNavigationBar]) {
[self setCustomNavigationBar:[[CORENavigationBar alloc] init]];
}
return [self customNavigationBar];
}
为什么标题消失了?我打电话给super 的drawRect: 并且不更改任何其他内容。
谢谢!
【问题讨论】:
-
问题不清楚。 “一旦我删除此方法”是哪种方法? drawRect 还是冒号后面的那个?如果是
drawRect,那么这是一个非常有趣的问题;) -
@Yar 已修复。这是冒号之后的方法。简单地说,只要我不覆盖
navigationBar,标题就会回到那里。希望它更清楚。感谢您的评论! -
navigationBar方法可能返回UINavigationBar的具体子类,或者至少设置实例。调试看看。
标签: objective-c cocoa-touch uinavigationbar