从子类访问uinavigationbar?

时间:2011-05-20 23:33:14

标签: iphone objective-c uinavigationcontroller uinavigationbar

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

2 个答案:

答案 0 :(得分:2)

只要视图位于viewController中,它就是导航堆栈的一部分,你可以这样做:

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

要访问viewController,您可以在View类中将id声明为ivar:

id myParentViewController;

将此id声明为属性,以便可以从View外部访问它。

从viewController创建视图时,您可以通过执行以下操作将viewController的引用传递到视图中:

view.myParentViewController = self;

self将是导航堆栈上viewController的引用。

现在您已进入视图,您可以通过以下方式访问导航栏:

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

答案 1 :(得分:1)

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