【发布时间】:2021-05-01 18:52:22
【问题描述】:
我花了一整天的时间试图弄清楚这一点,我感到非常沮丧。
我有一个导航堆栈,在每个屏幕上,根据屏幕的内容,我需要隐藏/显示一些右栏按钮项。但无论我做什么,项目都在堆栈的前一个屏幕上发生变化,而不是在当前屏幕上。
我的视图控制器都被推送到导航控制器上。每个视图控制器都可以实例化另一个视图控制器并推送到导航堆栈上。
let vc = UnifiedArticleViewController()
navigationController?.pushViewController(vc, animated: true)
我尝试了以下方法:
navigationController?.navigationBar.topItem?.rightBarButtonItems = [arrayOfBarButtonItems]
和:
navigationItem.rightBarButtonItems = [arrayOfBarButtonItems]
以及我从各种堆栈溢出建议中获得的各种其他建议。
我已经能够使用以下方法更改屏幕标题:
navigationController?.navigationBar.topItem?.title = "New Title Here"
而且效果很好。我做错了什么?
【问题讨论】:
-
navigationItem.rightBarButtonItems = [arrayOfBarButtonItems]应该可以工作。你能展示你如何呈现当前视图控制器的代码吗? -
您应该可以使用 viewDidLoad 函数中的
title = "New Title"更新标题。视图控制器是嵌入在导航控制器中,还是您正在向视图控制器本身添加导航栏? -
@aheze 我添加了有关如何将视图控制器添加到导航控制器的代码。
-
@James 视图控制器嵌入在导航控制器中。我已经更新了上面的代码。
标签: ios swift uinavigationcontroller uinavigationbar uibarbuttonitem