SwiftUI:Toggle详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI:Toggle详解相关的知识,希望对你有一定的参考价值。
参考技术A 使用:ToggleStyle,可以根据该模板定制
条件判断是否能点击Toggle
由于SwiftUI的Gesture事件是先由子控件触发,所以可以使用simultaneousGesture ()修饰符告诉SwiftUI您希望父手势和子手势同时触发,如:
SwiftUI:如何将 .toggle() not Toggle(isOn..) 与 UserDefault 结合使用
【中文标题】SwiftUI:如何将 .toggle() not Toggle(isOn..) 与 UserDefault 结合使用【英文标题】:SwiftUI: How to combine .toggle() not Toggle(isOn..) with UserDefault 【发布时间】:2020-08-11 20:41:19 【问题描述】:目前我有
@Published var isVisited: Bool
didSet
UserDefaults.standard.set(isVisited,forKey: "isVisited")
init()
self.isVisited = UserDefaults.standard.object(forKey: "isVisited") as? Bool ?? false
@State private var edit = false
@ObservedObject var userSettings = UserSettings()
Button(action: self.edit.toggle())
if self.edit
Image(systemName: "heart.fill").font(.title)
else
Image(systemName: "heart").font(.title)
.foregroundColor(.red)
理想情况下,只要点击“心”图标,它就会被填充并将数据保存到 UserDefault 数据库。我只知道 Toggle(isOn:..) 的用途。
任何建议将不胜感激!
【问题讨论】:
【参考方案1】:你的意思是这样的吗?
class UserSettings: ObservableObject
init()
isVisited = UserDefaults.standard.bool(forKey: "isVisited")
@Published var isVisited: Bool
didSet
UserDefaults.standard.set(isVisited, forKey: "isVisited")
struct RootView: View
@ObservedObject var userSettings = UserSettings()
var body: some View
Button(action: self.userSettings.isVisited.toggle() )
if self.userSettings.isVisited
Image(systemName: "heart.fill").font(.title)
else
Image(systemName: "heart").font(.title)
.foregroundColor(.red)
我在这里所做的是,每次加载 UserSettings
时,我都会从 UserDefaults 加载 isVisited
,然后每当设置该属性时,它都会更新 UserDefaults
。
然后在视图上而不是使用@State
保存数据,我直接从UserSettings
获取数据,因为它将拥有最新的数据。
【讨论】:
哇!!我做了同样的事情,但没有成功,也许我留下了 $ like self.$userSettings.isVisited.toggle() !非常感谢@Daniel Amarante 您可以删除init
并执行以下操作:@Published var isVisited = UserDefaults.standard.bool(forKey: "isVisited") ...
顺便问一下@Daniel Amarante 和@pawello2222,如果我想将保存的数据显示到另一个视图,那么该怎么做呢?我真的不想只为这个人使用 CoreData
@DucDang 这是另一个问题 :) 请创建一个新帖子并在那里描述您的问题。
@DucDang 您可以将UserSettings
的同一个实例共享为环境对象,然后对它的所有更改都会在所有屏幕上发生。以上是关于SwiftUI:Toggle详解的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 中的 Toggle() 运算符可以实现整数吗
UserDefaults 在 SwiftUI 中与 Toggle 绑定