我想要的是重寫UINavigationBar tintColor setter並強制默認顏色。貝婁是我的代碼(當然不會)。有沒有辦法讓它工作?是否有可能在財產製定者中強制價值?
@implementation UINavigationBar (UINavigationBarCategory)
- (void)setTintColor:(UIColor *)tint {
self.tintColor = [UIColor greenColor];
}
@end
我想要的是重寫UINavigationBar tintColor setter並強制默認顏色。貝婁是我的代碼(當然不會)。有沒有辦法讓它工作?是否有可能在財產製定者中強制價值?
@implementation UINavigationBar (UINavigationBarCategory)
- (void)setTintColor:(UIColor *)tint {
self.tintColor = [UIColor greenColor];
}
@end
(我使用property
作爲一個通用術語在這裏,在你的例子是爲tintColor
替身)
我不認爲你可以使用self.property =
語法分配內部setProperty:
方法。 self.property
只是[self setProperty:<value>]
的別名,它會遞歸地調用它自己。
你必須做這樣的事情:
- (void)setProperty:(id)pProperty {
[property autorelease];
property = [pProperty retain];
}
我仍然不是100%肯定你正在試圖做的工作會是什麼,但前面是一個開始。
如果要強制導航欄的默認顏色,你爲什麼不設置你的視圖控制器的viewDidLoad/viewDidAppear着色顏色?
self.navigationController.navigationBar.tintColor = [UIColor (color you want)];
基本上,因爲我有很多視圖控制器,我想只有一個地方可以爲所有導航欄設置這樣的屬性。這也太容易了! :) – sniurkst 2010-01-21 04:13:48
謝謝你提供豐富的答案!我理解我的代碼的遞歸問題,這就是爲什麼我有興趣,如果有另一種方式。至於我的特殊問題,我發現另一種強制默認色調顏色的方法。 – sniurkst 2010-01-21 04:11:11