PresentationButton没有触发两次动作。

12

我想以模态视图的方式呈现内容,然后在关闭后再次以同样的方式呈现。

struct ContentView : View {
    var body: some View {
        NavigationView {
            Group {
                Text("hi")
                Text("hello")
                }
                .navigationBarItem(title: Text("Demo"))
                .navigationBarItems(trailing:
                    PresentationButton(
                        Image(systemName: "person.crop.circle")
                            .imageScale(.large)
                            .accessibility(label: Text("User Profile"))
                            .padding(),
                        destination: Text("User Profile")
                    )
            )
        }
    }
}

它仅在第一次点击时触发。 在关闭目标视图后,再次点击 PresentationButton 不起作用。 有人有解决方案吗?

它只会在第一次点击时触发。在关闭目标视图后,再次点击PresentationButton没有任何反应。是否有人有解决方法?


3
我认为这似乎是一个漏洞。对我也没有用。希望有人(WWDC参与者)在SwiftUI实验室中向苹果的工作人员核对一下。 - SMP
@SMP 你知道我们应该在哪里填写问题吗? - ShurupuS
我也遇到了这个问题。更奇怪的是,我的演示文稿按钮上面还有另一个按钮,在第一次点击演示文稿按钮后,上面的按钮接管了演示文稿按钮的操作。 - Slayter
我也遇到了这个问题,你或者其他人能确认一下你所使用的操作系统吗?我很好奇是否只有在Catalina中才有“完全工作支持”。 - apocolipse
1
@apocolipse 我在两个平台上都遇到了这个问题(Catalina和Mojave)。 - ShurupuS
1
我也遇到了同样的问题,即使是从苹果开发者网站下载的教程项目也是如此。肯定是一个bug。 - Andrea Miotto
1个回答

5

看起来像是一个漏洞,这里有一个解决方法:

struct ContentView : View {

    @State var showModal: Bool = false

    var body: some View {
        NavigationView {
            Group {
                Text("hi")
                Text("hello")
            }
            .navigationBarItem(title: Text("Demo"))
            .navigationBarItems(trailing:
                Button(action: {
                    self.showModal = true
                }) {
                    Image(systemName: "person.crop.circle")
                }
            )
            }.presentation(showModal ? Modal(Text("Hey"),
                                             onDismiss: { self.showModal = false }) : nil)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接