我有一个基于UIView的子类,我想改变uinavigationbar的色调,但我尝试过的各种方法都没有用。我该怎么做?
答案 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进行工作。