我正在尝试从工作表视图转到另一页。这是第一个视图的代码:
UnitId StartTime IsFree IsWalkin
-- -------- ----------- -------- ----------
60 5097 2020-11-01 True False
78 5097 2020-11-19 True False
87 5097 2020-11-28 True False
这是第二个视图的代码:
struct FirstView: View {
@State fileprivate var isShowingSheet: Bool = false
var body: some View {
Button(action: {
isShowingSheet = true
}) {
Text("Show the sheet")
}
.sheet(isPresented: $isShowingSheet, content: {
SecondView()
})
}
}
问题在于,第三个视图也将在该工作表中。是否可以将第三个视图设置为普通页面而不是工作表中的视图?
谢谢!
答案 0 :(得分:0)
NavigationLink
应该在NavigationView
的同一视图层次结构中工作,但是.sheet
引入了另一个不同的视图层次结构,因此解决方案是将导航链接保留(隐藏)在先前的视图中,但可以通过工作表中的视图以编程方式将其激活。
这是一个演示(已通过Xcode 12 / iOS 14测试)
struct FirstView: View {
@State fileprivate var isShowingSheet: Bool = false
@State private var showThirdView = false
var body: some View {
Button(action: {
isShowingSheet = true
}) {
Text("Show the sheet")
}
.sheet(isPresented: $isShowingSheet, content: {
SecondView(showNext: $showThirdView)
})
.background(
NavigationLink(destination: ThirdView(), isActive: $showThirdView) {
EmptyView()
}
)
}
}
struct SecondView: View {
@Environment(\.presentationMode) var presentationMode
@Binding var showNext: Bool
var body: some View {
Button("Show the third view.") {
self.presentationMode.wrappedValue.dismiss()
DispatchQueue.main.async {
self.showNext = true
}
}
}
}