Сейчас я учусь создавать пример кода для SwiftUI, используя официальную версию Xcode11.Я написал простой код, чтобы показать и скрыть модальные.Этот код добавляет кнопку в список и отображает модальное.Странно, однако, что модальное больше не появляется, когда кнопка снова нажимается после закрытия.
Есть ли причина для этого или любого решения?
Происходит, когда в списке есть кнопка,но если вы удаляете только код из кода, модальное изображение может отображаться столько раз, сколько вам нужно.
Это код, вызывающий ошибку.
struct ContentView: View {
@State var show_modal = false
var body: some View {
List {
Button(action: {
print("Button Pushed")
self.show_modal = true
}) {
Text("Show Modal")
}.sheet(isPresented: self.$show_modal, onDismiss: {
print("dismiss")
}) {
ModalView()
}
}
}
}
Этокод, который не вызывает ошибку.
struct ContentView: View {
@State var show_modal = false
var body: some View {
Button(action: {
print("Button Pushed")
self.show_modal = true
}) {
Text("Show Modal")
}.sheet(isPresented: self.$show_modal, onDismiss: {
print("dismiss")
}) {
ModalView()
}
}
}
Единственное отличие состоит в том, существует ли список.
Код ModalView приведен ниже.
struct ModalView: View {
// 1. Add the environment variable
@Environment(\.presentationMode) var presentationMode
var body: some View {
// 2. Embed Text in a VStack
VStack {
// 3. Add a button with the following action
Button(action: {
print("dismisses form")
self.presentationMode.wrappedValue.dismiss()
}) {
Text("Dismiss")
}.padding(.bottom, 50)
Text("This is a modal")
}
}
}
Когда точка останова установлена, print («Button Pressed») вызывается каждый раз, но ModalView из .sheet не вызывается, и, естественно, тело класса ModalView не вызывается.