2012-09-19 77 views
3

在我的AppDelegate我有以下代碼:如何從一個UIViewController訪問UINavigationController的

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
UINavigationController *itemsNavigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1]; 

我怎樣才能UIVNagigationBar的背景色設置爲綠色?

如果我做的:

[self.navigationController.navigationBar setTintColor:[UIColor greenColor]]; 

從viewController1,這沒有任何影響。

在此先感謝!

UPDATE:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.title = NSLocalizedString(@"MyTitle", @""); 

     [self.navigationController.navigationBar setTintColor:[UIColor greenColor]]; 
     [self.parentViewController.navigationController.navigationBar setTintColor:[UIColor greenColor]]; 
    } 
    return self; 
} 

兩者沒有任何效果

回答

5

initWithNibName:bundle方法你的視圖控制器還沒有導航控制器。

如果您的導航控制器也是從nib文件創建的,請嘗試執行UIViewController的awakeFromNib方法並在其中設置顏色。一旦nib文件上的每個對象都被加載並初始化,就會調用awakeFromNib

如果以編程方式創建導航控制器,那麼只有在將視圖控制器(從筆尖加載)添加到導航控制器後,才應該設置顏色。您可以在添加視圖控制器的位置執行此操作。或嘗試執行viewDidLoadviewWillAppear方法UIViewController設置顏色。

+1

謝謝! viewDidLoad完成了這項工作......:D我知道這是愚蠢的,但如果你編程了將近14個小時,那麼你有時會犯下愚蠢的錯誤;-)謝謝! – CyberK

0

嘗試 [itemsNavigationController1.navigationBar setTintColor:的UIColor綠彩]];

+0

我沒有一個對象命名itemsNavigationController1 – CyberK

+0

的UINavigationController * itemsNavigationController1 = [[UINavigationController的頁頭] initWithRootViewController:viewController1]; - >這是你的代碼只有儀式.. – cancerian

2

您也可以使用iOS 5中的appearance方法在應用程序中更改導航欄的色調。例如,在您的application:didFinishLaunchingWithOptions中,您可以:

if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) 
{ 
    [[UINavigationBar appearance] setTintColor:[UIColor greenColor]]; 
} 
3

您過得很快。 (你沒有收到錯誤,但是你的消息是無效的消息發送到nil,因爲你可以很容易地發現通過使用NSLog。)等到FirstViewController的viewDidLoad

或者使用已經建議的外觀代理。這樣做的好處部分在於時機變得不重要;您可以在任何視圖控制器實例存在之前預先執行此操作。例如:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch19p549navigationInterface/p471p482navigationInterface/AppDelegate.m

相關問題