是否有可能在属性设置器中强制值?

时间:2010-01-20 21:50:11

标签: iphone objective-c uinavigationbar

我想要的是覆盖UINavigationBar tintColor setter并强制它的默认颜色。贝娄是我的代码(当然失败了)。有没有办法让它发挥作用?

@implementation UINavigationBar (UINavigationBarCategory)
- (void)setTintColor:(UIColor *)tint {
self.tintColor = [UIColor greenColor];
}
@end

2 个答案:

答案 0 :(得分:2)

(我在这里使用property作为通用术语,在您的示例中,它是tintColor的替身

我认为您不能在self.property =方法中使用setProperty:语法进行分配。 self.property只是[self setProperty:<value>]的别名,它将以递归方式调用自身。

你必须做这样的事情:

- (void)setProperty:(id)pProperty {
     [property autorelease];

     property = [pProperty retain];
}

我仍然不能100%确定你想要做的事情会起作用,但前面是一个开始。

答案 1 :(得分:1)

如果要强制使用NavigationBar的默认颜色,为什么不在视图控制器的viewDidLoad / viewDidAppear中设置色调颜色??

self.navigationController.navigationBar.tintColor = [UIColor (color you want)];