当我在 iOS14 sim 或设备上运行为 iOS14 编译的以下代码时,更新的 @State 变量“选择”不会传递到显示为 .sheet(...
确切的代码在 iOS 13.5 sim 或 13.6 设备上运行正常
如果我在视图中的某个位置放置一个文本(“”)并显示正在更新的变量,则代码在 iOS 14 上按预期运行。
似乎只有当我显示该值时,.sheet 才会再次渲染,并使用正确的值更新 MyView(tenum: Selection) 。
在下面的代码中,只需取消注释下面的行即可使其在 iOS14 中运行
// Text("当前:(selection.rawValue)")
import SwiftUI
struct ContentView:View {
@State private var selection=MyView.TestEnum.ONE
@State private var presentSheet=false
var body: some View {
VStack {
// Text("Currently: \(selection.rawValue)")
Button(action: {
selection=MyView.TestEnum.TWO
print("selecting: \(selection.rawValue)")
presentSheet=true
}, label: {
Text("Select TWO")
})
.sheet(isPresented: $presentSheet, onDismiss: {
print("dismissed")
}) {
MyView(tenum: selection)
}
}
}
}
struct MyView:View {
enum TestEnum: String, Codable {
case ONE="ONE"
case TWO="TWO"
}
var tenum:TestEnum
var body: some View {
Text("enum: \(tenum.rawValue)")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)