popViewControllerAnimated 改变 UINavigationBar 的 UIColor

Posted

技术标签:

【中文标题】popViewControllerAnimated 改变 UINavigationBar 的 UIColor【英文标题】:popViewControllerAnimated changes UINavigationBar's UIColor 【发布时间】:2014-06-09 20:54:10 【问题描述】:

我有一个'Back' UIBarButtonItem,正如你在第四个 ViewController 中看到的那样

Back 按钮连接到 IBAction:

- (IBAction)backClicked:(UIBarButtonItem *)sender

    [self.navigationController popViewControllerAnimated:YES];

但是当我从第四个 ViewController 调用 popViewControllerAnimated: 以返回到第三个 ViewController 时,它会更改 Tab Bar Tab 的 UINavigationBar tintColor 的原始颜色。 AppDelegate 将 UITabBarController 的原始导航栏 tintColor 设置为绿色,然后弹出将其更改为深灰色(第四个 VC 导航栏的颜色)

如何在调用popViewControllerAnimated: 时不丢失导航栏颜色??请帮忙,这几天我一直在努力解决这个问题。

【问题讨论】:

【参考方案1】:

检查您没有在前一个视图的 viewWillAppear 中设置它。

【讨论】:

没有在 AppDelegate.m 文件中使用以下代码设置 UITabBar 外观:[[UITabBar appearance] setTintColor:[UIColor colorWithHexString:@"#669900"]]; 我应该在第一个标签栏标签视图的 viewWillAppear 中重置 UITabBar 颜色吗? ...Nvm 我刚试过.. 好像我无法在 viewWillAppear 或 viewDidLoad 中设置它。【参考方案2】:

替换

[self.navigationController popViewControllerAnimated:YES];

以下(这是swift代码)

self.dismissViewControllerAnimated(true, completion: nil)

当您添加第四个视图控制器时,您没有使用导航控制器。这就是为什么只需调用dismissViewControllerAnimated 方法。

只有在通过 pushViewController 方法添加视图控制器时,才必须使用 UINavigationController 及其弹出方法。

我通过 - Go back to previous view controller doesn't work 了解到这一点

【讨论】:

以上是关于popViewControllerAnimated 改变 UINavigationBar 的 UIColor的主要内容,如果未能解决你的问题,请参考以下文章

popViewControllerAnimated 改变 UINavigationBar 的 UIColor

performSegueWithIdentifier 和 popViewControllerAnimated 破屏导航

UIAlertView 不应调用 popViewControllerAnimated

想使用 popViewControllerAnimated 而不是 popToRootViewControllerAnimated

导航控制器 popViewControllerAnimated :是的没有按预期工作

防止 uinavigationcontroller 设置中 popViewControllerAnimated 的错误访问崩溃