ios 当按下第一个按钮时,我的SwiftUI应用程序不会动态填充弹出视图的内容

0qx6xfy6  于 2023-05-23  发布在  iOS
关注(0)|答案(1)|浏览(124)

我有一个小图像/图标作为按钮和弹出模态视图网格。模态视图用于显示按钮图像的放大版本以及有关它的一些信息。然而,在实践中,按下的第一个按钮只会带来一个空的视图。只有在关闭它并按下其他按钮后,视图才会被填充。从这一点出发,应用程序按预期工作。我认为这是因为工作表修饰符的异步特性,但我似乎无法在第一次显示之前处理如何填充模态视图。
下面是代码的一个大大简化的版本(有两个简单的文本按钮),它表现出相同的行为,所以你可以看到我在做什么。

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”。

5sxhfpxr

5sxhfpxr1#

尝试使用

@State private var selectedItem: String?

.sheet(item: $selectedItem){ item in 
     ModalView(item: item)
 }

不需要showModal

相关问题