在 SwiftUI 中动态更改导航标题?
Posted
技术标签:
【中文标题】在 SwiftUI 中动态更改导航标题?【英文标题】:Dynamically change Navigation Title in SwiftUI? 【发布时间】:2020-12-04 19:54:30 【问题描述】:在 SwiftUI 中不可能有一个动态的导航标题。下面的代码不会随着计时器的流逝而更新标题。有没有办法做到这一点? (这是在 WatchOS 中)
(为更可测试的示例编辑代码)
import SwiftUI
struct TimerTestView: View
@State private var timeRemaining = 100
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View
Text("\(timeRemaining)")
.onReceive(timer) time in
if self.timeRemaining > 0
self.timeRemaining -= 1
.navigationTitle("\(timeRemaining)")
struct TimerTestView_Previews: PreviewProvider
static var previews: some View
TimerTestView()
【问题讨论】:
需要以某种方式进行调试 - 你能提供最小的工作演示吗? @Asperi 我上面的例子怎么样 【参考方案1】:只需包裹到NavigationView
即可解决问题(Xcode 12.1 / watchOS 7.0)
var body: some View
NavigationView
Text("\(timeRemaining)")
.onReceive(timer) time in
if self.timeRemaining > 0
self.timeRemaining -= 1
.navigationTitle("\(timeRemaining)")
【讨论】:
? 现在运行良好,谢谢!在我的生产应用程序中,我在 NavigationView 内的堆栈中包装了一个较早的视图,在这个视图中,我再次包装在导航视图中,它根本没有出现。当我早些时候在堆栈中删除 NavigationView 时,它现在出现并倒计时。 ? 我看到了同样的问题,但无法让它工作。并不是说这是一个不好的答案,只是它不适用于每个人:(以上是关于在 SwiftUI 中动态更改导航标题?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift UI 中单击按钮时从 swift UI 导航到情节提要?
从 swiftUI 中的一个嵌入式 UIViewController 导航到 swift UI 中的另一个嵌入式 UIViewcontroller