使用SwiftUI,我们在列表中安装了一个按钮。为什么当我点击按钮显示模式并再次关闭时,模式会消失?
我现在正在学习使用Xcode11的官方版本为SwiftUI创建一个示例代码。 我编写了一个简单的代码来显示和隐藏模态。 此代码向列表中添加一个按钮并显示一个模式。 然而,奇怪的是,当关闭后再次点击按钮时,模式不再出现 这是有原因的还是有解决办法的 当列表中有按钮时发生,但如果仅从代码中删除列表,则可以根据需要多次显示模式 这是导致错误的代码使用SwiftUI,我们在列表中安装了一个按钮。为什么当我点击按钮显示模式并再次关闭时,模式会消失?,swiftui,xcode11,Swiftui,Xcode11,我现在正在学习使用Xcode11的官方版本为SwiftUI创建一个示例代码。 我编写了一个简单的代码来显示和隐藏模态。 此代码向列表中添加一个按钮并显示一个模式。 然而,奇怪的是,当关闭后再次点击按钮时,模式不再出现 这是有原因的还是有解决办法的 当列表中有按钮时发生,但如果仅从代码中删除列表,则可以根据需要多次显示模式 这是导致错误的代码 struct ContentView:View{ @状态变量show_modal=false var body:一些观点{ 名单{ 按钮(操作:{ 打印(“
struct ContentView:View{
@状态变量show_modal=false
var body:一些观点{
名单{
按钮(操作:{
打印(“按下按钮”)
self.show_modal=true
}) {
文本(“显示模态”)
}.sheet(显示:self.$show_model,onDismiss:{
打印(“驳回”)
}) {
莫达维尤()
}
}
}
}
这是一段不会引起bug的代码
struct ContentView:View{
@状态变量show_modal=false
var body:一些观点{
按钮(操作:{
打印(“按下按钮”)
self.show_modal=true
}) {
文本(“显示模态”)
}.sheet(显示:self.$show_model,onDismiss:{
打印(“驳回”)
}) {
莫达维尤()
}
}
}
唯一的区别是是否有列表
下面是ModalView代码
struct-ModalView:View{
//1.添加环境变量
@环境(\.presentationMode)变量presentationMode
var body:一些观点{
//2.在VStack中嵌入文本
VStack{
//3.添加具有以下操作的按钮
按钮(操作:{
打印(“解雇表格”)
self.presentationMode.wrappedValue.discouse()文件
}) {
文本(“驳回”)
}.padding(.bottom,50)
文本(“这是一个模态”)
}
}
}
设置断点后,每次都会调用print(“Button Pushed”),但不会调用.sheet的ModalView,当然也不会调用ModalView类的主体。我认为问题在于,
.sheet
不在列表
上,而是在导致错误的代码中的按钮
上
请尝试以下方法:
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()
}
}
}
我认为问题在于,您的
.sheet
不在列表
上,而是在导致错误的代码中的按钮上
请尝试以下方法:
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()
}
}
}
我的回答有用吗?你的建议解决了问题。这真是帮了大忙。我的回答有用吗?你的建议解决了问题。这真是帮了大忙。我选择了最好的答案。非常感谢。我选择了最好的答案。非常感谢你。