#ios #swift #swiftui
#iOS #быстрый #свифтуи
Вопрос:
Я новичок в SwiftUI, и я хочу сохранить colorScheme
в @State
оболочку, но это не работает, оно обновляет неправильное значение @State
, как я должен решить эту проблему?
Мой код:
import SwiftUI
struct ContentView: View {
@Environment(.colorScheme) var colorScheme: ColorScheme
@State private var color: String = String()
var body: some View {
Text(color)
.onAppear() {
if (colorScheme == .light) {
color = "light"
}
else {
color = "dark"
}
}
.onChange(of: colorScheme) { _ in
if (colorScheme == .light) {
color = "light"
}
else {
color = "dark"
}
}
}
}
Ответ №1:
.onChange — это, по сути, набор желаний. Значение меняется, но оно еще не изменилось. Если вы измените его на:
.onChange(of: colorScheme) { newValue in
if (newValue == .light) {
color = "light"
}
else {
color = "dark"
}
}
это будет работать. Протестировано Xcode 12.2, iOS 14.2.