【发布时间】:2022-11-21 19:22:11
【问题描述】:
这是在Buttons 上调用NavigationLink 的旧方法
struct ContentView: View {
@State private var selection: String? = nil
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: View1(), tag: "tag1", selection: $selection) {
EmptyView()
}
NavigationLink(destination: NotView1(), tag: "tag2", selection: $selection) {
EmptyView()
}
Button("Do work then go to View1") {
// do some work that takes about 1 second
mySleepFunctionToSleepOneSecond()
selection = "tag1"
}
Button("Instantly go to NotView1") {
selection = "tag2"
}
}
.navigationTitle("Navigation")
}
}
}
此代码完美运行。它可以转到不同的View目标,具体取决于单击哪个按钮。不仅如此,它保证所有工作都已完成前导航到目标视图。然而,唯一的问题是'init(destination:tag:selection:label:)' was deprecated in iOS 16.0: use NavigationLink(value:label:) inside a List within a NavigationStack or NavigationSplitView
我得到 NavigationStack 太棒了等等。但是我如何翻译代码以使用新的NavigationStack + NavigationLink。特别是,我怎样才能确保工作完成前导航?
【问题讨论】:
标签: swiftui