我有这3个不同的视图,它们都通过NavigationView
相互连接。我正在尝试找到一种方法来导航到NavigationView
中的某个页面,但是我希望转换看起来像是向后的。
struct Testing: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination:testing2()) { Text("Go to two") }
}
.navigationBarTitle("Navigation")
}
}
}
struct testing2 : View {
var body: some View{
VStack {
NavigationLink(destination: testing3()) { Text("Go to third") }
}
.navigationBarTitle("Second Page")
}
}
struct testing3 : View {
var body: some View{
VStack {
Text("Go back to first")
}
.navigationBarTitle("Third Page")
}
}
我找到了一个解决方案,它结合了可观察对象,环境变量以及NavigationLink
上的标记和选择。
它们是使导航过渡转到特定页面的更简单解决方案,并且如果该视图在当前视图执行向后过渡之前是某个视图?
答案 0 :(得分:0)
一个基本的解决方法是添加@Binding并将其传递。检查出现的绑定索引。直到它不是索引presentation.wrappedValue.dismiss。一种更复杂的方法是添加一个处理所有导航逻辑的Navigator类。
答案 1 :(得分:0)
更简单的解决方案是按如下方式修改您的第三个视图:
struct testing3 : View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View{
VStack {
Button(action: {
self.presentationMode.wrappedValue.dismiss()
self.presentationMode.wrappedValue.dismiss()
}) {
Text("Go back to first")
}
}
.navigationBarTitle("Third Page")
}
}