2011-09-22 81 views
0

如何触发navigationController:willShowViewController委托方法为我的实现下面,以便导航控制器中的所有视图控制器将符合colorWithHexString#faf6f5?如何触发navigationController:willShowViewController委托在AppDelegate中的方法

目前,我的FirstViewController将会显示,但它似乎没有调用委托方法来改变其导航栏的颜色(以及随后堆叠到导航控制器上的所有其他视图控制器)。请注意,我已将“UINavigationControllerDelegate”添加到我的应用程序委托头文件中。

//In App Delegate 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    //Set First View 
    FirstViewController *firstView = [[FirstViewController alloc]init]; 

    // pushes a nav con 
    UINavigationController *tempNavcon = [[UINavigationController alloc]initWithRootViewController:firstView]; 
    self.navcon = tempNavcon; 

    [self.window addSubview:navcon.view]; 

} 

- (void)navigationController:(UINavigationController *)navigationController 
    willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ 

    navigationController.navigationBar.tintColor = [UIColor colorWithHexString:@"#faf6f5"]; 

} 

回答

0

是否有一个原因,您尝试更改事件方法中的tintColor而不是创建UINavigationBar实例时的原因?

+0

那好吧我只想澄清,改变色调的颜色仅仅是我做定制的一个,我需要。更改导航栏中的文本颜色,并且似乎无法直接在UINavigationbar实例中执行此操作,因此我必须在事件方法中执行此操作 – Zhen

0

以下是您的操作方法。 (注意的UIColor不接受十六进制值,你应该使用RGB值,或检查this page

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    //Initialize your view controller. 
    FirstViewController * firstView = [[FirstViewController alloc] init]; 

    // Create an instance of a UINavigationController. Its stack contains only firstView. 
    UINavigationController *navController = [[UINavigationController alloc] 
              initWithRootViewController:firstView]; 

    //Here is where you set the color of the navigationBar. See my note above for using RGB. 
    navController.navigationBar.tintColor = [UIColor greenColor]; 

    // You can now release the firstView here, navController will retain it 
    [firstView release]; 

    // Place navigation controller's view in the window hierarchy 
    [[self window] setRootViewController:navController]; 

    [navController release]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 
相关问题