【发布时间】:2020-09-10 14:16:33
【问题描述】:
我有一个名为word(Word 类型)的@EnvironmentObject,我将其identifier 属性用于SwiftUI 中NavigationLink 的标签。对于链接到 NavigationLink 的 DetailView,我所做的只是:
struct DetailView: View {
@EnvironmentObject var word: Word
var body: some View {
VStack {
Text(word.identifier)
Button(action: {
self.word.identifier += "a"
}) {
Text("Click to add an 'a' to Word's identifier")
}
}
}
}
导致这个 DetailView 的 ContentView 看起来像这样(我已经简化了我的实际代码以隔离问题)。
struct ContentView: View {
@EnvironmentObject var word: Word
var body: some View {
NavigationView {
NavigationLink(destination: DetailView()) {
Text(word.identifier)
}
}
}
}
当我点击 DetailView 上的按钮时,我希望它会使用新的 word.identifier 更新 DetailView,该 word.identifier 上附加了一个额外的“a”。然而,当我点击它时,它会将我带回到 ContentView,尽管更新后的 word.identifier。当 ContentView 的 NavigationLink 使用的 word.identifier 被修改时,我似乎找不到留在我的 DetailView 上的方法。另外,我正在运行 Xcode 11.3.1,目前无法更新,所以如果已经修补,请告诉我。
【问题讨论】:
标签: swift xcode swiftui xcode11 swiftui-navigationlink