0

我有我編程方式創建一個UINavigationController:如何更改UINavigationController的UINavigationBar?

MessageTableViewController* homeStream = [[MessageTableViewController alloc] initWithNibName:@"MessageTableViewController" bundle:nil]; 
      homeStream.fetchHomeStream = YES; 
      homeStream.title = @"Home"; 
      UINavigationController* navBarController = [[UINavigationController alloc] initWithRootViewController:homeStream]; 
      navBarController.tabBarItem.image = [UIImage imageNamed:@"hometab.png"]; 
      [homeStream release]; 

我有一個名爲STNavigationBar定製UINavigationBar的。我如何使用STNavigationBar而不是默認的UINavigationBar,它是UINavigationController的一部分?

回答

3

我結束了使用的iOS5的UIKit外觀代理:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header"] forBarMetrics:UIBarMetricsDefault]; 

沒有子類或類別需要。

0

編輯爲未來的讀者,下面的答案不會再在iOS 5

你不能僅僅將其設置爲現有實例工作,因爲UINavigationController的只讀屬性導航欄。我不認爲UINavigationController的子類是你想要的。

我認爲最好的辦法是創建一個擴展UINavigationBar的類,如here所討論的。

+0

我原本把它作爲一個可以正常工作的類別,但是iOS5打破了這個功能,現在使用類別來替代實際方法是一種不好的做法。所以我決定將其子類化。它在我在IB中設置導航欄時起作用,但我也需要以編程方式設置它... –

+0

我沒有意識到這一點。選項號碼怎麼樣? 3在這個答案? http://stackoverflow.com/questions/1869331/set-programmatically-a-custom-subclass-of-uinavigationbar-in-uinavigationcontrol/3080665#3080665 – Wolfert

+0

剛發佈了一個答案,我用iOS5的UIKit外觀代理 –

相關問題