0

问候!我已将我的 **UINavigationBar'**s barStyle 设置UIBarStyleBlack,并将tintColor设置为一种颜色(黑色除外,以便获得颜色/渐变)。这么多效果很好。

现在......假设我将一个新的视图控制器推送到导航控制器堆栈上。在这个特定的 VC 中,我希望导航栏变黑,但仅限于这个 VC。

因此,在新 VC 的viewWillAppear:方法中,我将导航栏的tintColor设置为 nil(或[UIColor blackColor] - 任何一个都可以)。在viewWillDisappear:中,我将tintColor改回原来的样子。再次,一切都很好。

直到我第二次(或更多)回到新的 VC。如果我这样做,导航栏会再次变黑,但不是左栏按钮项!相反,它保留了父 VC 的原始颜色!

我查看了各种示例代码(甚至是 Joe Hewitt 的 Three20 库,它似乎和我的照片控制器/浏览器一样)。据我所知,我正在做所有正确的事情,但我很困惑为什么除了我第一次进入我的新 VC 时,条形按钮项没有全部更改为黑色。

欢迎/赞赏线索!

4

3 回答 3

0

据我所知,这是一个已知的 3.0 错误。

于 2009-08-11T18:25:21.217 回答
0
    for (UIView *view in self.navigationController.navigationBar.subviews)
    {
        [view setNeedsDisplay];
    }

希望能帮助到你。

于 2010-06-01T16:23:12.707 回答
0

尝试添加到父视图控制器:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", @"") style:UIBarButtonItemStylePlain target:nil action:nil];
    [self.navigationItem setBackBarButtonItem:backButton];
    [backButton release];
}
于 2009-09-18T20:00:54.303 回答