从子类访问uinavigationbar?

问题描述:

我有一个基于UIView的子类,我想改变uinavigationbar的色调,但我试过的各种方法都没有奏效。我该怎么做呢?从子类访问uinavigationbar?

+0

如何你现在干什么呢? – 2011-05-20 23:47:05

只要视图是一个的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]; 
    } 

您可以从UINavigationController访问UINavigationBar。一种方法是将UINavigationController或UINavigationBar作为参数传递给UIView。或者UIView可以使用委托来通知外部UIViewController执行工作。