SwiftUI在UserDefaults中设置字符串值,但作为`环境对象'`
Hello exist是否有一种简单的方法将值放入UserDefaults中,作为要在其他视图中显示的SwiftUI在UserDefaults中设置字符串值,但作为`环境对象'`,swiftui,swiftui-environment,Swiftui,Swiftui Environment,Hello exist是否有一种简单的方法将值放入UserDefaults中,作为要在其他视图中显示的EnvironmentObject?类似于设置视图中的设置用户名,并显示在仪表板视图中。太多了终于找到了 答案仅基于Bool。她也是用String来做这件事的解决方案 使用选项卡视图设置的内容视图: import SwiftUI struct ContentView: View { var body: some View { VStack { T
EnvironmentObject
?类似于设置视图中的设置用户名,并显示在仪表板视图中。太多了终于找到了
答案仅基于Bool
。她也是用String
来做这件事的解决方案
使用选项卡视图设置的内容视图:
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
TabView{
Dashboard(userName: UserName())
.tabItem({
Image(systemName: "rectangle.3.offgrid")
Text("Dashboard")
})
Settings()
.tabItem({
Image(systemName: "gear")
Text("Einstellungen")
})
}
}
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
布尔值的用户设置和字符串的用户名
import SwiftUI
import Combine
final class UserSettings: ObservableObject {
let objectWillChange = PassthroughSubject<Void, Never>()
@UserDefault("ShowOnStart", defaultValue: true)
var showOnStart: Bool {
willSet {
objectWillChange.send()
}
}
}
final class UserName: ObservableObject {
let objectWillChange = PassthroughSubject<Void, Never>()
@UserDefault("userName", defaultValue: "UknowName")
var userNameSet: String {
willSet {
objectWillChange.send()
}
}
}
第二视图设置设置显示在仪表板视图中的更改
import SwiftUI
struct Dashboard: View {
@ObservedObject var settings = UserSettings()
@ObservedObject var userName = UserName()
var body: some View {
VStack{
Text("hallo")
ExtractedViewName(userName: userName)
ExtractedView(settings: settings)
}
}
}
struct Dashboard_Previews: PreviewProvider {
static var previews: some View {
Dashboard(userName: UserName())
}
}
struct ExtractedView: View {
@ObservedObject var settings : UserSettings
var body: some View {
VStack{
if settings.showOnStart{
Text("Welcome")
}
}
}
}
struct ExtractedViewName: View {
@ObservedObject var userName : UserName
var body: some View {
Text("Test One: \(userName.userNameSet)")
}
}
import SwiftUI
struct Settings: View {
@ObservedObject var settings = UserSettings()
@ObservedObject var userName = UserName()
@State private var userTextfield = ""
var body: some View {
VStack {
Toggle(isOn: $settings.showOnStart) {
Text("Show welcome text")
}
TextField("Name", text: $userTextfield){
self.userName.userNameSet = self.userTextfield
}
Button(action: {
print("\(self.userName.userNameSet)")
}) {
Text("Button")
}
}
}
}
struct Settings_Previews: PreviewProvider {
static var previews: some View {
Settings()
}
}
import SwiftUI
struct Settings: View {
@ObservedObject var settings = UserSettings()
@ObservedObject var userName = UserName()
@State private var userTextfield = ""
var body: some View {
VStack {
Toggle(isOn: $settings.showOnStart) {
Text("Show welcome text")
}
TextField("Name", text: $userTextfield){
self.userName.userNameSet = self.userTextfield
}
Button(action: {
print("\(self.userName.userNameSet)")
}) {
Text("Button")
}
}
}
}
struct Settings_Previews: PreviewProvider {
static var previews: some View {
Settings()
}
}