问题标签 [observableobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mvvm - SwiftUI - @Binding 到访问 ObservableObject 属性内的值的计算属性会复制变量吗?
在下面的代码(项目中某些代码的精简版本)中,我使用了具有两个视图的 MVVM 模式:
- ViewA - 显示存储在 ObservableObject ViewModel 中的值;
- ViewB - 显示相同的值并具有一个更改该值的 Slider,该值使用 Binding 传递给视图。
在 ViewModelA 内部,我有一个计算属性,它既可以避免视图直接访问模型,也可以在模型(正在显示的那个)内部的值发生更改时执行一些其他操作。
我还使用 Binding 将该计算值传递给 ViewModelB,它充当 ViewB 的 StateObject。但是,当拖动 Slider 以更改该值时,ViewA 上的值会更改,但在 ViewB 上不会更改,并且滑块本身不会滑动。正如预期的那样,在调试时,Binding 中的 WrappedValue 没有改变。
但是变化是如何向上传播的(通过绑定的设置器,我想)而不是向下传播回 ViewB?
我想只有当变量在某处被复制并且仅在一个地方更改时才会发生这种情况,但我似乎无法理解在哪里或如果那是实际发生的事情。
提前致谢!
意见:
视图模型:
模型:
view - SwiftUI - ObservableObject、EnvironmentObject、SummaryView
创建代码后,我想创建一个摘要视图,允许我查看在选择器中选择的值。我能怎么做?我阅读了一些关于@ObservableObject 和@EnvironmentObject 的论坛,但我无法理解......非常感谢:)
swift - SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject
ObservableObject 类是从 ContentView() 和另一个 Swift 类中实例化的。当 Swift 类运行 ObservableObject 类的函数时,它不会更新 ContentView() 的 @ObservedObject。
我知道这是因为我两次实例化 ObservableObject 类。当 ContentView() 不能/不能实例化 Observable 类时,使用 @ObservedObject 的最佳做法是什么?
我还没有找到让 @EnvironmentObject 与 Swift 类一起工作的方法。
我可以使用全局变量并运行 Timer() 来检查对它的更改。但是,这感觉像是一种丑陋的做法?!?
请参阅下面的示例代码。请在设备上运行,以查看打印语句。
编辑:我想我的问题是当我无法从 SwiftUI 视图实例化 Swift 类时,如何从 Swift 类获取数据并更新 SwiftUI 视图。
swiftui - UITextField 未更新以更改 ObservableObject (SwiftUI)
我正在尝试制作一个编辑 value 的 UITextView currentDisplayedAddress
。该值也被其他视图更改,我希望 UITextView 在发生这种情况时更新其文本。
视图正确初始化,我可以毫无问题地进行编辑并触发相关的视图更新currentDisplayedAddress
。AddressTextField
但是,当值被其他视图更改时,textField 的文本不会更改,即使textField.text
在内部打印正确的更新值updateUIView
并且其他视图也会相应更新。
我不知道是什么原因造成的。非常感谢任何帮助。
ios - 更改已发布变量时,SwiftUI 视图未更新
在按下按钮时,我的应用程序正在尝试联系 api 以接收数据。然后将此数据存储在可观察对象内的已发布变量中。出于某种原因,在多次按下打开该视图的按钮之前,该视图不会填充数据。我正在寻找在第一次按下按钮时使用从 api 调用收到的信息更新的视图。我引用的代码如下:
DataFetcher.swift:
EventsUserCreatedView.swift
注意:datafetcher(可观察对象)由 contentview 传递给 eventsusercreated 视图
非常感谢有关如何正确更新我的视图的任何帮助
swift - 如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?
我有一组颜色,我想保存到 UserDefaults。我有灰色、绿色、橙色和红色的默认值,但我想允许颜色选择器更改绿色橙色和红色。默认值在我的模拟器中有效并显示,但是当我尝试更改数组中的颜色时,我收到错误“尝试插入非属性列表对象(\n“50% 灰色”,\n 绿色,\n“ kCGColorSpaceModelRGB 0.647194 0.881984 0.980039 1 ",\n red\n) 用于键 SavedColors。我相信这是因为颜色选择器试图插入不同类型的颜色?看起来它可能正在尝试插入 CGColor 或 CGColorSpace?
这是我的项目代码:
swiftui - 发布值时,SwiftUI ObservableObject 未更新
我有一个视图和一个 viewModel,当用户添加到用户数组时应该更新 ListView。我可以验证是否正在添加用户,但 ObservedObject 没有更新。
我有一个搜索栏,可让您搜索用户,然后更新 ViewModel 中的用户数组,该数组应该更新 View 但它没有。
视图模型
看法
swiftui - Swifui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?
对于 MacOS 应用程序,使用 Xcode 11.6 (11E708)、SwiftUI,我在ContentView.swift
. 但我不能在里面使用这些数据AppDelegate.swift
:
构建成功,但print(contentView.order.item)
(请参见下文)产生此消息:
线程 1:致命错误:未找到 Order 类型的 ObservableObject。作为该视图的祖先,Order 的 View.environmentObject(_:) 可能会丢失。
我错过了什么?
在 ContentView.swift 中:
在 AppDelegate.swift 中:
binding - 尝试绑定 ObservableObject 但无法分配给属性:'XXXX' 是仅获取属性错误
我是 Swift 和 SwiftUI 的新手,我遇到了一个我无法理解的错误。
这是我从 Web 服务使用 JSON 加载的类
在一个视图中,我想绑定 nbveh 属性并使用按钮增加和减少它。
错误是:“无法分配给属性:'nbveh' 是一个 get-only 属性”
如何使此属性可编辑和可绑定?
感谢您的任何帮助
——戈德弗罗伊
swift - Xcode 中 SwiftUI 中的分段 11 非零退出代码错误
错误:分段错误:11(在项目“ProjectName”的目标“ProjectName”中)
命令 CompileSwift 因非零退出代码而失败
当我的项目中有以下文件时,这两个错误都存在:
此外,当我在我的内容视图初始化中声明对象时,我收到一个奇怪的错误,它说“无法构造 TimeFetcher”,因为它没有可访问的初始化程序”