问题标签 [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.

0 投票
1 回答
165 浏览

swiftui - IOS 14 将 ObservedObject 添加到 var 导致视图不会出现在 iPhone 上

我正在研究斯坦福在线 CS139p 中的示例。记忆游戏的卡片被绘制出来。我将 viewModel 设为 ObservableObject,发布代表记忆游戏的 var,然后运行应用程序。一切都按我的预期发生。然后,我将 @ObservedObject 属性处理器添加到 View Controller 中的 viewModel var。当我运行应用程序时,我不再看到卡片被抽出。

问题1:发生了什么?

问题2:我将如何调试这个?我尝试设置断点并遍历,但我无法确定出了什么问题。我用谷歌搜索并找到了一些可以尝试的东西,但最终无法让它发挥作用。一年前,当我第一次尝试时,这个例子对我有用。

MemorizeApp.swift

EmojiMemoryGameView.swift

EmojiMemoryGame.swift

记忆游戏.swift

0 投票
1 回答
93 浏览

swiftui - 获取@EnvironmentObject 到 NSObject 类

我有一个简单的ObservableObject类,我在 App.swift 文件中初始化并传递给第一个视图:

这很好用,但现在我需要从我的通知代表那里得到它。基本上我有这个:

在我NotificationDelegate的班级中,我如何访问Counter我实例化的班级?

0 投票
2 回答
586 浏览

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>属性时会发生这种情况。如果我将其注释掉,它会按预期工作。

在此处输入图像描述

重现此的完整示例代码是

0 投票
1 回答
71 浏览

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 中更改它时,我必须一直向下传递它。这似乎是一种不必要的工作。

0 投票
2 回答
462 浏览

swift - 在导航到其视图之前多次加载 ObservedObject

在以下方面遇到了一些麻烦。

我在 VStack 中有一个列表,如下所示:

此列表由 coreData fetchrequest 填充。每个 NavigationLinks 导航到 CityView 并传递一个城市对象。

CityView 有一个可观察对象“notificationHandler”,定义如下:

NotificationHandler() 设置 NotificationHandler 的一个实例,并在 init 中设置一些通知观察者,如下所示:

我的问题是——当应用程序启动到它的第一个视图时,它延续了上面的列表——我得到了一些 NotificationHandler 实例的启动——列表的每一行都有一个。- 这使我相信列表中的 NavigationLinks 正在预先加载他们持有的 CityView。但是我相信情况不再如此,延迟加载是默认行为。除此之外,在 CityView 中添加 onAppear() 表明它们没有完全加载。

任何帮助都会非常感激,我无法弄清楚这是怎么发生的。

谢谢

0 投票
1 回答
161 浏览

swiftui - Swift 如何重新加载环境对象

我想在我的视图中添加一个按钮来加载更多数据。在我的环境对象中,数据是通过 API 随机生成的。如何重新加载我的 Environment 对象以获取新项目。下面的代码应该清楚。提前致谢

0 投票
1 回答
69 浏览

swiftui - 具有 ObservableObject 属性的 ObservableObject 未触发 SwiftUI 更新

如您所见,我正在定义一个全局状态(“NavigationState”)来处理应用程序的导航(即选项卡选择)。因此,我有一个 ObservableObject (NavigationState),它将具有每个屏幕导航状态的属性(即 ContentViewNavigationState - 另一个 ObservableObject)。

实际行为

在这个例子中,我在 DispatchQueue.asyncAfter 中修改 App.swift 文件中的状态,状态正在改变(因为 ContentView 的 onReceive 修饰符正在显示更新值)但没有触发 ContentView 中的任何更新。

预期行为

应根据状态更改所选选项卡。

  • 有趣的是,如果我还修改了另一个属性(即 commented selectedTab),在这种情况下会触发更新,但不是仅更新 contentViewNavigation 的属性时。
0 投票
1 回答
78 浏览

swiftui - 在 SwiftUI 中传递 Lat/Long 函数

我正在构建一个 SwiftUI 应用程序,它根据用户纬度/经度显示数据。我的代码基于框架开发人员提供的这个示例。

使用 SwiftUI,我的LocationManager设置为:

每当我回到我的ContentView并尝试阅读纬度/经度时,它只会显示为 0.0。但如果我在体内输出它们,值就会正确显示。

0 投票
1 回答
83 浏览

xcode - 如何在此类中使用可观察对象?

我正在尝试将 Observable Objects 与此类一起使用:-

问题是,我不确定如何在 ContentView 继续

任何人都可以帮忙吗?谢谢。

0 投票
1 回答
63 浏览

swift - 使用全局数组更新滚动视图

在我的主屏幕上,我有一个滚动视图,我想显示应用程序中发生的所有事件。目前我已将其定义为全局变量,如下所示:

该函数addEvent()是从应用程序周围其他类的不同方法内部调用的,因此我将其设为全局。更新数组时如何让应用程序更新滚动视图matchEvents?我把我的 ScrollView 代码放在下面。

任何帮助,将不胜感激