ios - 返回上一个 VC 后导航栏会发生变化

标签 ios swift swift3 uinavigationcontroller uinavigationbar

我的导航栏样式存在一些问题。假设我有两个 View Controller 。

VC 1 有一个带有白色文本的橙色条,我的设置如下:

   func stylingStuffs(){
    self.navigationController?.navigationBar.barTintColor = UIColor(red: 0.94, green: 0.38, blue: 0.24, alpha: 1)
    self.navigationController?.navigationBar.backgroundColor = UIColor(red: 0.94, green: 0.38, blue: 0.24, alpha: 1)
    self.navigationController?.navigationBar.tintColor = UIColor.white
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
    self.navigationController?.navigationBar.isTranslucent = false
    UIApplication.shared.statusBarStyle = .lightContent
}

VC 2 有一个透明的导航栏,其代码是:

func stylingStuffs(){
    navigationController?.setNavigationBarHidden(false, animated: true)
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController?.navigationBar.barTintColor = UIColor(red: 0.94, green: 0.38, blue: 0.24, alpha: 0)
    self.navigationController?.navigationBar.backgroundColor = UIColor(red: 0.94, green: 0.38, blue: 0.24, alpha: 0)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
    navigationController?.navigationBar.tintColor = UIColor.white
    self.navigationController?.navigationBar.barStyle = .default
    UIApplication.shared.statusBarStyle = .lightContent
}

当我从 VC1 导航到 VC2 时,一切正常,当我从 VC2 导航到 VC1 时,VC1 的导航栏以及状态栏现在都是白色/透明的。

我该如何解决这个问题,或者我想在返回 VC1 后重置样式?

最佳答案

第一个 View VC 1 Controller viewDidAppear调用stylingStuffs()

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated: animated)

    stylingStuffs()
}

@rmaddy评论

You are confused because there is actually only one navigation bar. It is part of the one navigation controller that both view controllers are in

所以需要重置VC 1的导航栏样式

关于ios - 返回上一个 VC 后导航栏会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374067/

相关文章:

ios - 在 tableview Swift 3 中保存并显示录制的语音笔记

xcode - 如何在 Swift 3.0 中使用@asmname()

ios - 仅检测矩形物理体一侧的碰撞 - Swift3

ios - 更新到 XCode 8 后 View 大小错误

swift - 如何在 OSX 上安装 SwiftyJSON

ios - 保持更新的模型类并从 Swift 中的多个 View Controller 访问它?

ios - 如何使用 NSCoding 对通过委托(delegate)传递的值进行编码

ios - 将 UIScrollView 滚动到固定范围

ios - 内部错误。请在 bugreport.apple.com 提交错误并附上

ios - 当你有多个按钮时,如何在 UITableView 中保持 UIButton 状态被选中?