Ios 点击SwiftUI中的ActionSheet.按钮后如何显示视图?

Ios 点击SwiftUI中的ActionSheet.按钮后如何显示视图?,ios,swift,swiftui,Ios,Swift,Swiftui,我一直在玩SwiftUI,但在这件简单的事情上被难住了。基本上,我是在点击一个动作表.按钮后试图触发一个模态。以下是我目前的代码: struct SomePage: View { @State var showSheet = false var body: some View { Button(action: { self.showSheet = true }) { Text("Show atio

我一直在玩SwiftUI,但在这件简单的事情上被难住了。基本上,我是在点击一个
动作表.按钮后试图触发一个模态。以下是我目前的代码:

struct SomePage: View {
    @State var showSheet = false

    var body: some View {
        Button(action: {
            self.showSheet = true
        }) { 
            Text("Show ation sheet") 
        }.presentation(sheet)
    }

    private var sheet: ActionSheet? {
        let button = ActionSheet.Button.default(Text("Button") {
             self.showSheet = false
             // what now??
        }
        let action = ActionSheet(title: Text("Title"),
                                 message: nil,
                                 buttons: [button])
        return showSheet ? action : nil
    }

    // This is the modal I'm trying to present 
    // after tapping on the action sheet button
    private var modal: Modal {
        return Modal(SomePage())
    }
}
我曾尝试向按钮添加第二个
演示
处理程序,并切换
showmodel
属性,但调试器显然抱怨在第一个演示仍在演示时尝试第二个模式演示


有人对如何使这项工作有想法吗?

你离它不远了

添加另一个
@State
以处理模态的表示

struct ContentView:View{
@状态变量showSheet=false
@状态变量showmodel=false
var body:一些观点{
按钮(操作:{
self.showSheet=true
}) {
文本(“显示行动表”)
}
.actionSheet(显示:$showSheet,内容:actionSheet)
.sheet(显示:$showModal,内容:{Text(“Modal”)})
}
private func actionSheet()->actionSheet{
let button=ActionSheet.button.default(文本(“显示模式”)){
self.showSheet=false
self.showmodel=true
}
让actionSheet=actionSheet(标题:文本(“actionSheet”),
信息:无,
按钮:[按钮])
退货行动单
}
}
结果


为Xcode 11 beta 5更新

谢谢!不过,使用GDC和timeout是实现这一点的“官方”方式吗?@GrzegorzAperliński我忘了去掉这段代码——一开始这似乎是个好主意(给SwiftUI一些喘息的空间来更新自己),但框架似乎会自动处理。谢谢!你说得对。它像一个符咒一样工作——我缺少的是在onDismiss处理程序中将表示标志设置回
false
。有一种想法会神奇地发生:我注意到发生了一件奇怪的事情——如果有两个按钮,每个按钮都连接到一个模态呈现触发器,那么只有第二个按钮起作用。我还没弄明白为什么。这个奇怪的东西还在这里。经过数小时的测试、尝试和搜索,我终于找到了这篇文章。简单的行动表事件: