这是 iOS14 中预期的 @State var 行为还是一个错误?

2024-01-21

当我在 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(使用前将#替换为@)

这是 iOS14 中预期的 @State var 行为还是一个错误? 的相关文章

随机推荐