Swift 活页不';在屏幕上被触发时无法打开

Swift 活页不';在屏幕上被触发时无法打开,swift,swiftui,ios14,Swift,Swiftui,Ios14,我遇到了一个奇怪的错误,工作表如果在onAppear中触发,则无法打开 以下不会触发Xcode 12.3、iOS 14.3中的工作表: struct ContentView: View { @State private var sheetActive = false var body: some View { Text("Test") .sheet(isPresented: $sheetActive) {

我遇到了一个奇怪的错误,
工作表
如果在
onAppear
中触发,则无法打开

以下不会触发Xcode 12.3、iOS 14.3中的
工作表

struct ContentView: View {
    @State private var sheetActive = false

    var body: some View {
        Text("Test")
            .sheet(isPresented: $sheetActive) {
                Text("Sheet")
            }
            .onAppear {
                sheetActive = true
            }
    }
}
工作表
只有在我以任何方式与屏幕交互后才会弹出

但是,如果我在
导航视图
/
列表
等中包装
文本
,则会起作用

此外,即使附加一个简单的修饰符(如
onChange
)也会触发
工作表

struct ContentView: View {
    @State private var sheetActive = false

    var body: some View {
        Text("Test")
            .sheet(isPresented: $sheetActive) {
                Text("Sheet")
            }
            .onAppear {
                sheetActive = true
            }
            .onChange(of: sheetActive) {
                print($0)
            }
    }
}
当我异步触发
工作表时,它也起作用:

struct ContentView: View {
    @State private var sheetActive = false

    var body: some View {
        Text("Test")
            .sheet(isPresented: $sheetActive) {
                Text("Sheet")
            }
            .onAppear {
                DispatchQueue.main.async {
                    sheetActive = true
                }
            }
    }
}

这是iOS 14.3中的一个bug还是我不知道的一些预期更改?

如果您将
工作表Active
更改为
true
,它应该在初始化时打开

SO和苹果论坛经常提到使用onAppear()初始化/激活内容的bug。这是非常不可靠的

struct ActiveSheetView: View {
    @State private var sheetActive = true
    var body: some View {
        Text("Test")
            .sheet(isPresented: $sheetActive) {
                Text("Sheet")
            }
    }
}

尝试更改工作表顺序和显示方法,添加延迟更改顺序也不起作用。我甚至不需要延迟,它也可以使用简单的
DispatchQueue.main.async
。只是因为某种原因标准方法不起作用。好吧,那么这看起来像个bug。