导航栏更改在运行时不生效 (Swift/XCode)

Navigation Bar Changes Not Taking Effect at Runtime (Swift/XCode)

我正在学习 Udemy.com 中关于 Swift 中的待办事项列表应用程序的教程,我正在尝试更改导航栏背景颜色和文本。正如您在此屏幕截图中看到的,预览的更改仅显示在 Table 视图中,而不显示在我尝试更改它们的导航控制器中。然后当我 运行 应用程序时,更改无处可见。我完全在情节提要中完成了这些更改,并硬编码了一些列表值。我无法继续,直到我可以让“+”按钮出现在 运行 时间,这样我才能让用户添加到列表中.知道出了什么问题吗?如果可以避免的话,我宁愿不必用代码来做。

我遵循了与您完全相同的教程并创建了相同的应用程序。我 运行 也遇到了和你一样的问题。

经过一番研究,我解决了这个问题。我认为这与 iOS 13 中导航栏的样式更改有关。特别是大标题的工作方式。

但是,我发现这只能通过代码实现。情节提要中的导航控制器即使已设置也不会显示大标题的背景色,因此即使已修复,它在情节提要中仍然看起来不正确。但是,当您 运行 应用程序时,它应该可以正确显示。

为了解决这个问题,我将以下代码插入到我的视图控制器中的 viewWillAppear() 方法中:

let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.backgroundColor = .systemBlue
navigationController?.navigationBar.standardAppearance = navigationBarAppearance
navigationController?.navigationBar.scrollEdgeAppearance = navigationBarAppearance

请让我知道这是否为您解决了问题,或者如果您遇到任何其他问题。

我不知道为什么,这可能是当前 XCode 的错误,但是为导航栏选中这个“首选大标题”选项是阻止更改在预览以及在运行时生效。

取消选中它可以让它在预览和运行时按照教程中的预期自由工作,没有任何问题。