选择其他选项卡时更改导航栏标题

Change Navigation Bar Title when different tab is selected

提问人:spoax 提问时间:2/9/2018 最后编辑:pableirosspoax 更新时间:11/22/2021 访问量:5565

问:

我对 xcode 还很陌生。

我正在尝试以编程方式更改导航标题,当在我的 .UITabBarController

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

下面是主选项卡控制器的代码。

// 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]
}

这是第二个选项卡按钮的代码 - 其他 2 个选项卡与此相同,因此不想用大量代码向此提要发送垃圾邮件。

// SUPER VIEW DID LOAD

override func viewDidLoad() {
    super.viewDidLoad()
    
    // NAVIGATION ITEM
    navigationItem.title = "Shot List"
    navigationController?.navigationBar.prefersLargeTitles = true
    
}
iOS Swift UITabBar控制器 UI导航栏

评论

0赞 Milan Nosáľ 2/9/2018
您是否将 tabBarController 推送到 navigationController?
0赞 spoax 2/9/2018
我将 tabBarController 作为我的顶层,然后是 4 个不同的 TableViewController,它们代表每个选项卡按钮。我正在加载的视图中设置导航栏的标题。
0赞 Milan Nosáľ 2/9/2018
但是导航栏设置在哪里?默认情况下,tabController 和 tableViewController 没有 navigationBar
0赞 spoax 2/9/2018
我看不到我在我的应用程序委托中将其与此行分开的任何地方。我在哪里有窗户?rootViewController = UINavigationController(rootViewController: page_jobList())
0赞 Milan Nosáľ 2/9/2018
我想查看您设置该导航栏的代码/情节提要。不知道我们可以猜测

答:

13赞 Dan Karbayev 2/9/2018 #1

由于视图控制器嵌入在 中,因此应更改其(选项卡栏控制器的)navigationItem。此外,您应该在 method 中执行此操作,而不是 ,如下所示:UITabBarControllerviewWillAppearviewDidLoad

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