【发布时间】:2020-04-05 11:15:55
【问题描述】:
我正在使用 SwiftUI 为 macOS 创建一个 TabView。
希望,
1)当用户点击一个tabItem时,将选择的标签号保存到UserDefaults(使用我的@propertyWrapper @UserDefault)。
2)当此应用程序重新启动时,将通过 UserDefaults 中选定的选项卡编号自动选择 tabItem。
问题:单击 tabItem 时没有任何效果。
可以给我一些建议或正确的方法吗?
谢谢
我的@propertyWrapper
@propertyWrapper
struct UserDefault<T> {
let key: String
let value: T
init(key: String, value: T) {
self.key = key
self.value = value
}
var wrappedValue: T {
get {
return UserDefaults.standard.value(forKey: self.key) as? T ?? self.value
}
set {
UserDefaults.standard.set(newValue, forKey: self.key)
}
}
}
struct UserDefaultsConfig {
@UserDefault(key: "SelectedTab", value: 0) static var selectedTab: Int
}
SwiftUI 视图
struct ContentView: View {
@State var selectedTab = UserDefaultsConfig.selectedTab
var body: some View {
TabView(selection: self.$selectedTab) {
Text("Tab0 Content")
.tabItem {
Text("Tab0")
}.tag(0)
Text("Tab1 Content")
.tabItem {
Text("Tab1")
}.tag(1)
Text("Tab2 Content")
.tabItem {
Text("Tab2")
}.tag(2)
Text("Tab3 Content")
.tabItem {
Text("Tab3")
}.tag(3)
}
}
}
【问题讨论】:
-
您的关于如何在 SwiftUI 中使用用户默认设置的问题已在此处讨论stackoverflow.com/questions/56822195/…
标签: swiftui