我希望在表格中有一个系统/亮色/暗色模式选择器,以及其他设置。
选择不同的方案确实会更改ContentView(表格后面)中的UI,但表格本身仍保留旧的方案,必须关闭并重新打开。
我做错了什么?
示例:
选择不同的方案确实会更改ContentView(表格后面)中的UI,但表格本身仍保留旧的方案,必须关闭并重新打开。
我做错了什么?
示例:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var viewManager: ViewManager
@State var showSettingsSheet = false
var body: some View {
NavigationView {
List {
Text("Some content 1")
Text("Some content 2")
}
.toolbar {
ToolbarItem {
Button(action: {
showSettingsSheet.toggle()
}){
Image(systemName: "gearshape.fill")
}
.sheet(isPresented: $showSettingsSheet){SettingsSheet()}
}
}
}
.preferredColorScheme(viewManager.colorScheme == "Light" ? .light : viewManager.colorScheme == "Dark" ? .dark : nil)
}
}
struct SettingsSheet: View {
@Environment (\.presentationMode) var presentationMode
@EnvironmentObject var viewManager: ViewManager
var body: some View {
NavigationView{
GroupBox {
Picker("Display Mode", selection: $viewManager.colorScheme) {
Text("System").tag("System")
Text("Light").tag("Light")
Text("Dark").tag("Dark")
}
.pickerStyle(.segmented)
}
.toolbar {
ToolbarItem {
Button(action: {
presentationMode.wrappedValue.dismiss()
}){
Text("Done")
}
}
}
}
}
}
class ViewManager: ObservableObject {
@AppStorage("colorScheme") var colorScheme: String = "System"
}