1

我用TabBarController創建了一個應用程序,4個TabBarItems和每個TabBarItem都有自己的NavigationController文件(在IB中創建的所有東西)。UINavigationController(drawRect :)

我使用的drawRect函數來設計我的導航欄:



@implementation UINavigationBar (customImage) 

-(void)drawRect:(CGRect)rect { 

    UIImage *image = [UIImage imageNamed:@"MyImage.png"]; 
    [image drawInRect:CGRectMake(0,0, self.frame.size.width,self.frame.size.height)]; 

} 

@end 

的問題是,在導航欄的變化,每視圖控制器我的應用程序裏面,我要的是隻畫了導航欄的一個TabBarItem僅使用其他控制器的默認導航欄。
如何做到這一點?

感謝,

回答

0

好吧,

他花了我很長時間,但我鰭解決方案。通過使用混合的方法,我可以做任何我想要的。 關於如何實現它的更多信息,請看link

+0

任何機會,您可以發佈實際的代碼來調整特定控制器的drawRect方法嗎? – prendio2 2010-05-27 23:28:47

+1

我因使用混合方法而被拒絕,它不再是有效的解決方案 – Lope 2012-08-25 13:13:07

0

使用類別可能不是在這種情況下,最好的主意(如果你使用一個類別覆蓋drawRect:,所有UINavigationController旨意受到影響)。你最好是繼承UINavigationController,並只在你想要的選項卡中使用自定義子類。

編輯:子類的UINavigationController是相當容易:

(在.h文件)

@interface MyCustomNavigationController : UINavigationController { 
} 
@end 

(在.m文件)

@implementation MyCustomNavigationController 

-(void)drawRect:(CGRect)rect { 
    //custom drawing here 
} 
@end 

然後,使用MyCustomNavigationController在適當的地方代替UINavigationController。類別(您在示例中使用的類別)對於向現有類中添加便利方法很有用,但在替換已有方法時會很危險(因爲您的自定義方法將替換原始方法)。

+0

好的,但我怎麼能繼承NavigationController並繪製navigationBar裏面?我認爲這是最好的想法,但我不知道如何去做。你有一些代碼嗎? – ludo 2010-04-01 03:55:01

+0

我已經這麼做了,因爲就像我說過的那樣,我使用了IB,並且我已經爲每個navigationController子類化了。但似乎沒有調用drawRect。 – ludo 2010-04-01 04:09:07

+1

噢,對不起,我沒有看到你正在向UINavigationBar添加一個類別,而不是UINavigationController('drawRect:'不會爲UINavigationController調用)。不幸的是,UINavigationBar和UINavigationController在這方面不太靈活(你不能設置導航控制器的導航欄)。使用自定義UIToolbar可能會更好(我在http://www.iphonesdkarticles.com/2008/09/navigation-controller-uitoolbar.html上找到了一個快速教程)。否則,您可以嘗試將圖像添加爲導航欄的其中一項。 – shosti 2010-04-01 04:47:34