【发布时间】:2020-05-13 15:47:48
【问题描述】:
我有一个带有“显示工作表”按钮的 SwiftUI 视图,当按下该按钮时,我想在工作表上显示第一个视图。该视图有一个关闭自身的按钮。如果再次按下显示工作表按钮,现在我想在工作表上显示第二个视图,它也有关闭按钮。代码如下:
struct FirstSheetView: View {
@Binding var isPresented: Bool
var body: some View {
Button("Dismiss") {
self.isPresented = false
}
}
}
struct SecondSheetView: View {
@Binding var isPresented: Bool
var body: some View {
Button("Dismiss") {
self.isPresented = false
}
}
}
enum ActiveSheet {
case first, second
}
struct ContentView: View {
@State private var isShowingPhotoSheet = false
@State private var activeSheet: ActiveSheet = .first
var body: some View {
VStack {
Button(action: {
self.isShowingPhotoSheet.toggle()
}) {
Text("Show sheet")
}
}
.sheet(
isPresented: $isShowingPhotoSheet,
onDismiss: loadSecondView,
content: {
if self.activeSheet == .first {
FirstSheetView(isPresented: self.$isShowingPhotoSheet)
} else {
SecondSheetView(isPresented: self.$isShowingPhotoSheet)
}
}
)
}
private func loadSecondView() {
activeSheet = .second
self.isShowingPhotoSheet.toggle()
}
}
工作表显示得很好,我可以关闭第一张工作表,但不能关闭第二张工作表(只能向下滑动),但按下“关闭”按钮似乎没有任何作用。可能是什么问题?
【问题讨论】: