gpt4 book ai didi

objective-c - ArrayController 的 CoreData 选择绑定(bind)未跨多个 NIB 文件刷新

转载 作者:行者123 更新时间:2023-12-03 17:11:27 25 4
gpt4 key购买 nike

我很难让我的 Cocoa 应用程序按预期工作。它由 main.nib 中的工具栏和 details.nib 文件中的自定义 View 组成。现在我希望用户在工具栏中的 NSPopupButton 中选择一个条目,并且自定义 View 的内容应相应更改。

为了实现此目的,我在 main.nib 中添加了一个 ArrayController,显示以下配置:

Attributes Inspector for Array Controller Managed Object Context Configuration

此外,托管对象上下文绑定(bind)到模型 key 路径delegate.managedObjectContext(它不是基于文档的应用程序)。

使用此配置,NSPopupButton 工作得很好,如果我向工具栏添加一个标签(也在 main.nib 中)并将其值绑定(bind)到选择( Controller 键)、名称(键值路径),内容就会刷新每当我更改选择时。

NSPopupButton 的绑定(bind)如下图所示: NSPupupButton Bindings

因此,在我的details.nib中,我尝试了以下方法来达到相同的效果。我添加了一个 ArrayController,它的托管对象上下文也绑定(bind)到模型 key 路径delegate.managementObjectContext。配置也与上图所示完全相同。然后,我添加了一个标签并将其值绑定(bind)到此 ArrayController 的选择( Controller 键)、名称(键值路径)。

Label Bindings

问题是标签仅在应用程序正确启动后显示初始选择。之后,当我更改 NSPopupButton 的选择时,标签不会相应更改。

enter image description here

我可以选择哪些选项来让 ArrayController 跨多个 NIB 文件工作?

顺便说一句:我尝试关注this blog post让它工作,但似乎我在这里遗漏了一些东西。

更新:如果我用 NSTextField 替换 details.nib 中的标签并更改其文本,则更改将反射(reflect)在相关的 NSPopupButton 条目中。所以我想我做了正确的事情,但主要问题仍然存在:我只能编辑在应用程序启动期间加载的条目。切换到另一个 NSPopupButton 条目不会更改 NSTextField 中的文本。

更新 2:我创建了一个具有完全相同配置的小型示例项目,并将其上传到 GitHub 。因此,请随意检查它或使用解决方案方法创建拉取请求。

最佳答案

您似乎忽略了这样一个事实:当您在 Details.xib 上创建第二个数组 Controller 时,它与 MainMenu.xib 上的数组 Controller 没有关系。它们是两个独立的实例。

当您更改 PopUp 上的选择时,唯一受影响的数组 Controller 是 MainMenu.xib 上的数组 Controller 。

这里有多种选择:

  1. 当您创建 DetailViewController 时,传递对 Controller 上数组 Controller 的引用并绑定(bind)到该 Controller (不要在details.xib 上创建新的引用)
  2. 只需使用简单的 KVO 来观察 Controller 上的选择,并以编程方式更改标签值。
  3. 只需使用简单的 KVO 来观察 Controller 上的选择并更新 DetailsViewController 上的数组 Controller 以保持同步。
  4. 您的解决方案在这里...

只要您了解发生了什么,我相信您会找到解决原始问题的最佳解决方案。

关于objective-c - ArrayController 的 CoreData 选择绑定(bind)未跨多个 NIB 文件刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25127034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com