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 的错误访问崩溃