选择不同选项卡时更改导航栏标题

spo*_*oax 2 uinavigationbar uitabbarcontroller ios swift

我仍然是xcode的新手.

我想在我的UITabBarController中选择不同的选项卡时以编程方式更改导航标题.

我有一个创建标签栏的UItabBarController,然后我有单独的UIViewControllers,每个标签都有不同的内容 - 这部分工作正常,但是当选择不同的标签时我无法更改导航标题.

这是主标签控制器的代码.

// SUPER VIEW DID LOAD

override func viewDidLoad() {
    super.viewDidLoad()

    // NAVIGATION ITEM
    navigationItem.title = "Job Information"
    navigationController?.navigationBar.prefersLargeTitles = true

    //setup our custom view controllers

    let jobInfo = page_jobInfo()
    let shots = page_shotList()
    let attachments = page_attachments()
    let notes = page_notes()

    jobInfo.tabBarItem.title = "Information"
    jobInfo.tabBarItem.image = UIImage(named: "jobInfo")

    shots.tabBarItem.title = "Shots"
    shots.tabBarItem.image = UIImage(named: "shots")

    attachments.tabBarItem.title = "Attachments"
    attachments.tabBarItem.image = UIImage(named: "attachments")

    notes.tabBarItem.title = "Notes"
    notes.tabBarItem.image = UIImage(named: "notes")

    viewControllers = [jobInfo, shots, attachments, notes]
}
Run Code Online (Sandbox Code Playgroud)

以下是第二个标签按钮的代码 - 其他2个标签与此相同,因此不希望使用大量代码向此垃圾邮件发送垃圾邮件.

// SUPER VIEW DID LOAD

override func viewDidLoad() {
    super.viewDidLoad()

    // NAVIGATION ITEM
    navigationItem.title = "Shot List"
    navigationController?.navigationBar.prefersLargeTitles = true

}
Run Code Online (Sandbox Code Playgroud)

Dan*_*yev 7

由于嵌入了视图控制器UITabBarController,因此应更改其(标签栏控制器)navigationItem.此外,你应该在viewWillAppear方法中而不是viewDidLoad像这样:

override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)
  self.tabBarController?.navigationItem.title = "Bookmarks"
}
Run Code Online (Sandbox Code Playgroud)