问题标签 [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.
swiftui - IOS 14 将 ObservedObject 添加到 var 导致视图不会出现在 iPhone 上
我正在研究斯坦福在线 CS139p 中的示例。记忆游戏的卡片被绘制出来。我将 viewModel 设为 ObservableObject,发布代表记忆游戏的 var,然后运行应用程序。一切都按我的预期发生。然后,我将 @ObservedObject 属性处理器添加到 View Controller 中的 viewModel var。当我运行应用程序时,我不再看到卡片被抽出。
问题1:发生了什么?
问题2:我将如何调试这个?我尝试设置断点并遍历,但我无法确定出了什么问题。我用谷歌搜索并找到了一些可以尝试的东西,但最终无法让它发挥作用。一年前,当我第一次尝试时,这个例子对我有用。
MemorizeApp.swift
EmojiMemoryGameView.swift
EmojiMemoryGame.swift
记忆游戏.swift
swiftui - 获取@EnvironmentObject 到 NSObject 类
我有一个简单的ObservableObject
类,我在 App.swift 文件中初始化并传递给第一个视图:
这很好用,但现在我需要从我的通知代表那里得到它。基本上我有这个:
在我NotificationDelegate
的班级中,我如何访问Counter
我实例化的班级?
swiftui - UIViewRepresentable 在模态呈现的 SwiftUI 视图中不起作用
为了自定义 a UISlider
,我在 a 中使用它UIViewRepresentable
。它公开了 a@Binding var value: Double
以便我的视图模型 ( ObservableObject
) 视图可以观察更改并View
相应地更新 a 。
问题是当@Binding
值改变时视图没有更新。在以下示例中,我有两个滑块。一土Slider
一风俗SwiftUISlider
。
两者都将绑定值传递给应该更新视图的视图模型。本机Slider
确实会更新视图,但不会更新自定义视图。在日志中,我可以看到$sliderValue.sink { ...
已正确调用,但视图未更新。
我注意到当呈现视图具有该@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
属性时会发生这种情况。如果我将其注释掉,它会按预期工作。
重现此的完整示例代码是
ios - Motherview 中缺少 ObservableObject
我有以下视图文件:
当我完成后,我setUserNameView()
想将索引更新为 1,以便它切换到 setMasterPasswordView。我传递progress
给视图,然后在another view
其中更新值。
现在 xcode 抱怨:Missing argument for parameter 'progress' in call
调用在contentView()
.
我的问题是,为什么上面的视图或任何其他视图RegistrationView
也需要这个对象,以及如何让我免于这项工作。我试图将其设为progress
私有,但这不起作用。我在这个视图中定义类和所有其他东西,我只需要它自己和孩子的孩子。
PS对于可观察的物体有更好的方法吗?例如,当我需要主视图中的值并且可以在 child.child.child.view 中更改它时,我必须一直向下传递它。这似乎是一种不必要的工作。
swift - 在导航到其视图之前多次加载 ObservedObject
在以下方面遇到了一些麻烦。
我在 VStack 中有一个列表,如下所示:
此列表由 coreData fetchrequest 填充。每个 NavigationLinks 导航到 CityView 并传递一个城市对象。
CityView 有一个可观察对象“notificationHandler”,定义如下:
NotificationHandler() 设置 NotificationHandler 的一个实例,并在 init 中设置一些通知观察者,如下所示:
我的问题是——当应用程序启动到它的第一个视图时,它延续了上面的列表——我得到了一些 NotificationHandler 实例的启动——列表的每一行都有一个。- 这使我相信列表中的 NavigationLinks 正在预先加载他们持有的 CityView。但是我相信情况不再如此,延迟加载是默认行为。除此之外,在 CityView 中添加 onAppear() 表明它们没有完全加载。
任何帮助都会非常感激,我无法弄清楚这是怎么发生的。
谢谢
swiftui - Swift 如何重新加载环境对象
我想在我的视图中添加一个按钮来加载更多数据。在我的环境对象中,数据是通过 API 随机生成的。如何重新加载我的 Environment 对象以获取新项目。下面的代码应该清楚。提前致谢
swiftui - 具有 ObservableObject 属性的 ObservableObject 未触发 SwiftUI 更新
如您所见,我正在定义一个全局状态(“NavigationState”)来处理应用程序的导航(即选项卡选择)。因此,我有一个 ObservableObject (NavigationState),它将具有每个屏幕导航状态的属性(即 ContentViewNavigationState - 另一个 ObservableObject)。
实际行为
在这个例子中,我在 DispatchQueue.asyncAfter 中修改 App.swift 文件中的状态,状态正在改变(因为 ContentView 的 onReceive 修饰符正在显示更新值)但没有触发 ContentView 中的任何更新。
预期行为
应根据状态更改所选选项卡。
- 有趣的是,如果我还修改了另一个属性(即 commented
selectedTab
),在这种情况下会触发更新,但不是仅更新 contentViewNavigation 的属性时。
swiftui - 在 SwiftUI 中传递 Lat/Long 函数
我正在构建一个 SwiftUI 应用程序,它根据用户纬度/经度显示数据。我的代码基于框架开发人员提供的这个示例。
使用 SwiftUI,我的LocationManager
设置为:
每当我回到我的ContentView
并尝试阅读纬度/经度时,它只会显示为 0.0。但如果我在体内输出它们,值就会正确显示。
xcode - 如何在此类中使用可观察对象?
我正在尝试将 Observable Objects 与此类一起使用:-
问题是,我不确定如何在 ContentView 继续
任何人都可以帮忙吗?谢谢。
swift - 使用全局数组更新滚动视图
在我的主屏幕上,我有一个滚动视图,我想显示应用程序中发生的所有事件。目前我已将其定义为全局变量,如下所示:
该函数addEvent()
是从应用程序周围其他类的不同方法内部调用的,因此我将其设为全局。更新数组时如何让应用程序更新滚动视图matchEvents
?我把我的 ScrollView 代码放在下面。
任何帮助,将不胜感激