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。