0

我有一個基於UIView的子類,我想改變uinavigationbar的色調,但我試過的各種方法都沒有奏效。我該怎麼做呢?從子類訪問uinavigationbar?

+0

如何你現在幹什麼呢? – 2011-05-20 23:47:05

回答

2

只要視圖是一個的viewController這是導航堆棧的一部分,你可以這樣做:

viewController.navigationController.navigationBar.tintColor = [UIColor blackColor]; 

要訪問的viewController,你可以聲明一個id爲您的視圖類伊娃:

id myParentViewController; 

將此id聲明爲屬性,以便可以從視圖外部訪問它。

當創建從的viewController的觀點,你可以通過做傳遞一個參考的viewController到視圖:

view.myParentViewController = self; 

self將是參照導航堆棧上的的viewController。

現在,您可以在視圖的時候,你可以通過做這個訪問的導航欄:

if([myParentViewController isKindOfClass:[UIViewController class]]) 
    { 
     UIViewController *theParentViewController = (UIViewController*)myParentViewController; 
     theParentViewController.navigationController.navigationBar.tintColor = [UIColor blackColor]; 
    } 
1

您可以從UINavigationController訪問UINavigationBar。一種方法是將UINavigationController或UINavigationBar作爲參數傳遞給UIView。或者UIView可以使用委託來通知外部UIViewController執行工作。