UINavigationBar 的标题不会随着 push segue 的转换而改变

Posted

技术标签:

【中文标题】UINavigationBar 的标题不会随着 push segue 的转换而改变【英文标题】:UINavigationBar's title doesn't change with transition by push segue 【发布时间】:2019-06-03 10:48:46 【问题描述】:

所以,在我的项目中,当点击第一个屏幕上标题为“A”的按钮时,我尝试使用“push”segue。 push segue 到标题为“B”的第二个屏幕的转换总是很顺利,但导航栏标题不会随着转换而改变。 在“B”屏幕上,我在 IBInspector 上将 VC 命名为“B”,这样第二个屏幕的标题应该是“B”。但转换后,标题仍然是“A”,如下图所示。 https://thatnaoki.sakura.ne.jp/image/navBar.gif

该项目属于我工作的一家公司,因此我无法显示代码或更多详细信息,但我试图尽可能详细地告诉您。 第一个画面被“现在的模态”的segue出现。 我将导航控制器设置为“A”屏幕的根 vc。

这是我迄今为止尝试过的。

在第二个 VC 中,我在 viewdidloadviewdidappear 添加了 navigationItem.title = "B"self.title = "B",但两者都不起作用。仍然显示“A”。 在第二个 VC 中,我已经通过属性检查器将 VC 的标题设置为“B”。 在第二个VC中,我添加了self.navigationController?.isNavigationBarHidden = true,然后navigationbar被隐藏了。 (当然这并没有直接帮助我,但我只是测试过。)

我试图在这个项目之外创建相同的情况。但我无法在项目之外重现这一点。这意味着我的项目代码必须有这种情况的原因。但我完全不确定是哪部分造成的。

我阅读了有关导航控制器的苹果文档,但他们说“每次***视图控制器更改时,导航控制器都会相应地更新导航栏。”这对我没有多大帮助。

所以,我有点陷入这种情况......

谁能告诉我导航标题不随过渡而改变的任何可能原因?很抱歉没有给出示例代码。

【问题讨论】:

【参考方案1】:

尝试在viewDidLoad() 中设置titleviewController’s title property

class ViewController: UIViewController 
    override func viewDidLoad() 
        super.viewDidLoad()
        self.title = "Your Title Here"
    

【讨论】:

感谢您的回答!抱歉我忘记写了,但我已经在 viewdidload 和 viewdidappear 上试过了,结果还是一样……仍然没有改变。 你是对的。感谢您的意见!我刚刚添加了它。【参考方案2】:

在您的视图控制器内部:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    // Get the new view controller using segue.destination.
    // Pass the selected object to the new view controller.        
    if segue.identifier == "yadadada" 
        if  let nc = segue.destination as? UINavigationController 
            if let ti = nc.navigationBar.topItem 
                ti.title = "Yeah!"
            
        
            

【讨论】:

以上是关于UINavigationBar 的标题不会随着 push segue 的转换而改变的主要内容,如果未能解决你的问题,请参考以下文章

popViewController 不会删除 UINavigationBar 项目

UISearchBar 的宽度在嵌入 UINavigationBar 时不会改变

SwiftUI 2 .onChange() 中的选取器不会更改 UINavigationBar.appearance()

单击后退按钮时,导航堆栈中 VC 的 UINavigationBar 标题颜色不会改变

UITableView 滚动 UINavigationBar

UINavigationBar 后退按钮标题更改方向更改