2010-01-20 135 views
0

我想要的是重寫UINavigationBar tintColor setter並強制默認顏色。貝婁是我的代碼(當然不會)。有沒有辦法讓它工作?是否有可能在財產製定者中強制價值?

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

回答

2

(我使用property作爲一個通用術語在這裏,在你的例子是爲tintColor替身)

我不認爲你可以使用self.property =語法分配內部setProperty:方法。 self.property只是[self setProperty:<value>]的別名,它會遞歸地調用它自己。

你必須做這樣的事情:

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

    property = [pProperty retain]; 
} 

我仍然不是100%肯定你正在試圖做的工作會是什麼,但前面是一個開始。

+0

謝謝你提供豐富的答案!我理解我的代碼的遞歸問題,這就是爲什麼我有興趣,如果有另一種方式。至於我的特殊問題,我發現另一種強制默認色調顏色的方法。 – sniurkst 2010-01-21 04:11:11

1

如果要強制導航欄的默認顏色,你爲什麼不設置你的視圖控制器的viewDidLoad/viewDidAppear着色顏色?

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

基本上,因爲我有很多視圖控制器,我想只有一個地方可以爲所有導航欄設置這樣的屬性。這也太容易了! :) – sniurkst 2010-01-21 04:13:48

相關問題