1

我實現了自定義UINavigationBar的使用此代碼(放置在頂部我AppDelegate.m文件):定製UINavigationBar的不同的看法 - iPhone SDK

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

而且它的偉大工程!問題是,當我推送一個特定的視圖控制器類時,我想刪除自定義導航欄並顯示標準控件(或者更改NavigationBar.png)。

但我不知道如何做到這一點,谷歌搜索並沒有真正的幫助。 有沒有人這樣做?

非常感謝, 佈雷特

回答

1

而不是使用的drawRect覆蓋,放置的碼該位在導航控制器內的每個視圖控制器。然後,只需更改在每個視圖控制器中使用的圖像,你希望它是不同的:

self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"NavigationBar.png"].CGImage; 

您將有包括石英核心,所以在您的視圖控制器的進口這行頭文件:

#import <QuartzCore/QuartzCore.h> 
+0

嗯......編譯好。但是,NavigationBar.png不顯示。它仍然顯示原始的NavigationBar。我把它放在我的loadView方法中。你會建議把它稱爲別的地方嗎? – Brett 2010-09-12 15:06:53

+0

這很奇怪,似乎總是適合我在loadView中正常工作。你將不得不移除你的App Delegate中的UINavigationBar(CustomImage)drawRect函數,以便它能夠正常工作,那還在嗎? – 2010-09-12 15:20:56

+0

是的,我確實刪除了它。可能還有其他事情正在發生。我正在使用Three20,所以我確信這是搞砸了。我喜歡你的答案的邏輯,所以我會繼續努力解決任何Three20問題並使其工作。非常感謝。 – Brett 2010-09-12 15:27:52