使用Navigationcontroller作为视图在Uipopovercontroller中更改导航栏和toolBar的色调

时间:2011-01-06 21:58:46

标签: ios ipad

我有一个UINavigationController作为我的UIPopoverController的主视图。我想更改navigationBar和toolBar的颜色色调,但似乎无法使其工作。

有人能指出我正确的方向吗?

这是我现有的代码无效。 其中颜色方案= [UIColor colorWithRed:0.228绿色:0.307蓝色:0.492 alpha:1.000] 以下是NSLOG声明的结果: 颜色方案= UIDeviceRGBColorSpace 0.228 0.307 0.492 1

    self.navController = [[UINavigationController alloc]
                      initWithRootViewController:serversMenu];
NSLog(@"Color Scheme = %@", self.appDelegate.colorScheme);
self.navController.navigationBar.tintColor = self.appDelegate.colorScheme;
self.navController.toolbar.tintColor = self.appDelegate.colorScheme;

self.navController.navigationBar.translucent = YES; 
UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:self.navController];
poc.delegate = serversMenu;
serversMenu.mainPopOver = poc;
[poc release];

谢谢,

罗布

2 个答案:

答案 0 :(得分:4)

这很好用:

AboutViewController *avc = [[AboutViewController alloc] init];

UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:avc] retain];

avc.navigationController.navigationBar.tintColor = [UIColor greyColor]; /* or whatever color you choose */
toolbar.tintColor = [UIColor greyColor];

取决于您选择如何创建UIPopoverController

答案 1 :(得分:0)

这是一个错误...这里是你的修复...用这个创建一个UINavigationBar的子类,因为它是唯一的新方法:

- (void)setTintColor:(UIColor *)tintColor
{
    // Bug workaround.  
    [super setTintColor:[self tintColor]];
}

我打算冒险尝试说这是iOS 4.2.x的PopOver / SplitView更新中的一个错误...我说“bug”因为我设置的非常像你和根据4.1,它按预期工作。现在,在4.2.x下,它最初看起来不错,但是一旦你在弹出窗口中打开masterView然后旋转回双分割,masterView的导航栏就是银色(默认情况下是ios),没有多少锤击会得到masterView的navbar色调重置为您的配色方案......

考虑到我自己并不完全理解,我并不是最好如何以错误报告的形式提出这个问题。但使用工作,我们没有做任何疯狂的事情!