问题标签 [observedobject]

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 回答
196 浏览

ios - 无法在视图之间传递数据,也无法在第二个视图中更新 - SwiftUI

我正在尝试使用@Published@ObservedObject遵循本文在 2 个视图之间传递数据,但由于某种原因,我无法传递数据,@Published只是保持初始状态,而不是在单击按钮时更改。

第一个视图ProductList2导航到 tabView,我正在尝试将数据传递给其中一个 tabView。任何帮助,将不胜感激。

这是我正在创建的ObservableObject视图@Published

这是我试图检索数据的 tabview 视图:

编辑:

我已经更新了导航链接,@ObservedObject但仍然无法正常工作:

这是更新后的 ProductList2 NavigationLink:

这是@ObservedObject在 ProductTab5View 上,我也无法预览工作:

0 投票
2 回答
543 浏览

swift - SwiftUI 何时发布 ObservableObjects

我正在尝试了解 SwiftUI 在内存管理方面是如何在内部工作的。我对此毫无疑问。

当我将 NavigationLink 添加到具有一些搜索功能并从云加载一些数据的第二个视图时。

现在当我回到根视图时,我的 observableObject 类仍在内存中。

有谁知道 SwiftUI 如何管理内存和释放对象?

这是我的实验的示例代码。

这就是我收到的内存图。

在此处输入图像描述

0 投票
3 回答
631 浏览

swift - swiftUI中子视图中的@StateObject和@ObservedObject有什么区别

我创建了一个这样的模型:

模型用于“主页”视图和“主页”的子视图“HomeSub”

在 HomeSub 视图中,1 和 2 有什么区别?当我运行该项目时,它们的行为完全相同。

0 投票
2 回答
154 浏览

core-data - @StateObject 用于没有上下文的 NSManagedObject 不发布更改

就像在许多应用程序中一样,我有一个项目列表(由 Core Data 获取请求填充)、一个用于创建新项目的工作表,以及一个用于在点击列表中的一行时编辑项目的工作表。我正在尝试统一两个表单以创建和编辑更新,并将取消/保存逻辑放在表单的超级视图中。

所以我有这样的事情:

  • ListView:由 Core Data 获取请求填充的行列表
  • AddView:带有 FormView 嵌入 + 取消和保存按钮的 NavigationView
  • EditView:带有 FormView 嵌入 + 取消和保存按钮的 NavigationView
  • FormView:一个TextField,用于更新项目的名称

在 AddView 的 init() 中,我在没有任何上下文的情况下创建了一个新的 NSManagedObject(我这样做是因为我不希望在 AddView 中创建新项目时更新我的​​ ListView,但只有当我保存此项目时 - > 替代方法可能是使用子上下文,或根据返回对象的 isInserted 或 objectID.isTemporaryID 过滤获取请求结果)。AddView 包含一个带有 FormView 嵌入的 NavigationView、一个取消按钮和一个保存按钮。此保存按钮基于托管对象上的计算属性被禁用(对象名称不能为 nil)。

在 EditView 中,我传递了从 ListView 中点击的项目。此项目是附加到应用程序主 viewContext 的现有 NSManagedObject(来自 ListView 的获取请求)。EditView 包含一个带有 FormView 嵌入的 NavigationView、一个取消按钮和一个保存按钮(与 AddView 完全相同)。基于相同的计算属性,此保存按钮也被禁用。

我的问题是,当我从 FormView 中的 TextField 更新项目名称时,启用/禁用保存按钮的条件不适用于 AddView(当我从 FormView 更改项目名称时,此 AddView 实际上没有刷新) 但适用于 EditView(当我从 FormView 更改项目名称时,此 EditView 会刷新)。如果我在 AddView 的 init() 中将上下文附加到新的 NSManagedObject,则条件就像在 EditView 中一样。

因此,SwiftUI 似乎没有观察到没有任何上下文的 NSManagedObject?我错过了什么还是这是一个错误?

0 投票
2 回答
462 浏览

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

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

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

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

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

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

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

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

谢谢

0 投票
1 回答
264 浏览

swiftui - 调用中缺少参数“查看调用”的参数

我很难理解为什么我必须在调用此视图时提供名为 vm 的弹出视图依赖项,因为它是可观察的

0 投票
1 回答
125 浏览

swift - 如何在另一个视图中更改类的布尔实例?

我想在一个视图中点击一个按钮并更改另一个视图上的文本。更改布尔值的按钮位于 LessonOne 上,而我想在 ContentView 上显示的文本。

我的第一课中的代码是:

我的 ContentView 中的代码是:

代码运行,但它没有绑定……我继续 LessonOne,点击按钮,返回 ContentView,但没有任何改变。你能告诉我该怎么做吗?

0 投票
1 回答
579 浏览

swiftui - 即使在第一个视图 Swiftui 中设置了值,ObservedObject 也返回 nil

我有一个班级“ActualCourse”

还有两个结构“设置”和“课程”

但是当我导航到课程视图时,objCourse.id 返回 nil

我究竟做错了什么 ?我必须在一开始就给一个随机的 UUID,因为我找不到另一种方式...

0 投票
1 回答
83 浏览

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

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

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

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

0 投票
1 回答
18 浏览

swift - 即使我使用了@Published 字词,email_SignUp 等数据也不会保存在我的 ViewModel 类中

总的来说,我有一个具有 @Published 变量的 ViewModel

另外,我有一个视图,用户可以通过文本字段进行交互。在这里,我使用了一个自制的自定义 TextFields,它以图像、文本和动作为参数。

TestView 只是与“email_SignUp”和“password_SignUp”无关的其他按钮的视图。

这是我的自定义 TextField 的样子 -

在文本字段中输入数据时, - ViewModel 中的“email_SignUp”不为空,但是,在点击 NavigationLink“Next”后,ViewModel 类“Parent”中的 email_SignUp 变为空......我该怎么办?