2

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()
    }
}
4

1 回答 1

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)")
    }
}
于 2020-12-04T20:03:41.417 回答