Ios 在加载时将@State变量从UserDefaults更改为value,而不是更新选择器
我试图在加载应用程序时使用存储在UserDefaults中的值更新@State变量,但我的选择器没有更新。这就是我所尝试的:Ios 在加载时将@State变量从UserDefaults更改为value,而不是更新选择器,ios,swift,swiftui,Ios,Swift,Swiftui,我试图在加载应用程序时使用存储在UserDefaults中的值更新@State变量,但我的选择器没有更新。这就是我所尝试的: struct ContentView: View { @State var selectedCanteen = 1 init() { let previousSelectedCanteen = UserDefaults.standard.string(forKey: "selectedCanteen") if let e
struct ContentView: View {
@State var selectedCanteen = 1
init() {
let previousSelectedCanteen = UserDefaults.standard.string(forKey: "selectedCanteen")
if let exist = previousSelectedCanteen {
self.selectedCanteen = Int(exist) ?? 1
}
}
var body: some View {
Picker(selection: $selectedCanteen, label: Text("Testing...")) {
Text("Stuff").tag(1)
Text("Stuff 2").tag(2)
}
}
}
我来自react native,因此可能错过了Swift/SwiftUI中的一些基本概念。希望有人能把我引向正确的方向。尝试使用以下方法
@State var selectedCanteen: Int
init() {
let previousSelectedCanteen = UserDefaults.standard.string(forKey: "selectedCanteen")
var initialValue = 1
if let exist = previousSelectedCanteen {
initialValue = Int(exist) ?? 1
}
_selectedCanteen = State<Int>(initialValue: initialValue)
}
@State var selected食堂:Int
init(){
让PreviousSelected食堂=UserDefaults.standard.string(forKey:“Selected食堂”)
var initialValue=1
如果让存在=先前选择的食堂{
初始值=整数(存在)??1
}
_Selected食堂=状态(初始值:初始值)
}
您能解释一下这种方法吗?@State
在完成视图构造之前不会链接到所有者,因此在此期间其包装值不能更改,所以保留初始值(这是您观察到的)。我建议在构造函数中使用所需的值显式初始化@State
。这是动态给出@State
初始值的方法。谢谢,我在这里学习了下划线语法: