從userDefaults.standard.sring(forKey "name").components(seperatedby: " ")我想在視圖中創建一個串列(SwiftUI 串列)。
List { userDefaults.standard.string(forKey "name").components(seperatedby: " ")[1] userDefaults.standard.string(forKey "name").components(seperatedby: " ")[2] ... }
具有可變長度userDefaults.standard.string(forKey "name").components(seperatedby: " "
我嘗試了...在一段時間內,但它不能在視圖中
uj5u.com熱心網友回復:
首先,您需要從中獲取資料,UserDefaults然后構建一個串列。List在這里您可以找到有關SwiftUI 中組件的更多資訊: https ://www.hackingwithswift.com/quick-start/swiftui/how-to-create-a-list-of-dynamic-items
你也不能放在String串列中,你應該用Text組件包裝它(這里是關于這個組件的資訊https://developer.apple.com/documentation/swiftui/text)
所以這就是你的情況:
struct ContentView: View {
// Extracting data from UserDefaults
let names = UserDefaults.standard.string(forKey: "name")?.components(separatedBy: " ") ?? []
var body: some View {
// List received array of names by first parameter
List(names, id:\.self) { name in
Text(name) // <-- Here you wrap your string inside UI component
}
}
}
但是你應該知道這個串列不會是動態的。如果內部發生某些變化UserDefaults,您的視圖將不會更新。為了使其動態化,您應該創建一個ObservableObject模型來管理您的資料。您可以在此鏈接上閱讀有關此協議的更多資訊:https ://www.hackingwithswift.com/quick-start/swiftui/how-to-use-observedobject-to-manage-state-from-external-objects
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522253.html
上一篇:Swift-如何從另一個視圖控制器中關閉以前的視圖控制器或我想要的控制器?
下一篇:任務@Sendable操作
