我有一个小图像/图标作为按钮和弹出模态视图网格。模态视图用于显示按钮图像的放大版本以及有关它的一些信息。然而,在实践中,按下的第一个按钮只会带来一个空的视图。只有在关闭它并按下其他按钮后,视图才会被填充。从这一点出发,应用程序按预期工作。我认为这是因为工作表修饰符的异步特性,但我似乎无法在第一次显示之前处理如何填充模态视图。
下面是代码的一个大大简化的版本(有两个简单的文本按钮),它表现出相同的行为,所以你可以看到我在做什么。
import SwiftUI
struct ContentView: View {
@State private var showModal = false
@State private var selectedItem = ""
var body: some View {
VStack {
Button(action: {
self.selectedItem = "Button 1"
self.showModal = true
}) {
Text("Button 1")
}
Button(action: {
self.selectedItem = "Button 2"
self.showModal = true
}) {
Text("Button 2")
}
}
.sheet(isPresented: $showModal, content: {
ModalView(item: self.selectedItem)
})
}
}
struct ModalView: View {
let item: String
var body: some View {
VStack {
Text("You pushed \(item)")
}
}
}
在这种情况下,如果我点击“按钮1”,它只会打开一个视图,上面只写着“你按了”。如果我关闭该模式并再次点击它,同样的事情会发生。只有当我点击“按钮2”时,模态视图才会弹出并显示“You pushed Button 2”,在此之后,当我点击“按钮1”时,它也会显示“You pushed Button 1”。
1条答案
按热度按时间5sxhfpxr1#
尝试使用
和
不需要
showModal