gpt4 book ai didi

cocoa - 如何设置 NSPopUpButton 的绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 16:08:43 25 4
gpt4 key购买 nike

我想将 NSPopUpButton 的选择绑定(bind)到预定义值之一。为了更简单,想象一个博客应用程序:我有 BlogPostCategory实体(核心数据,尽管并不重要)和每个 BlogPost对象具有指向 Category 之一的链接对象(通过 category 属性)。

我想让用户通过 NSPopUpButton 更改类别,因此在我的 XIB 中,我有 NSArrayController 来保存所有可能的类别,并将按钮的内容值绑定(bind)到:

  • 绑定(bind)到:categoriesArrayController
  • Controller 键:arrangedObjects
  • 型号 key :标题

这很好地填充了所有类别的标题的弹出窗口。我还可以将选定对象绑定(bind)到:

  • 绑定(bind)到:blogObjectController(或直接绑定(bind)到 Blog 对象)
  • Controller 键:选择
  • 型号键:类别

此操作有效,并且在弹出窗口中选择了正确的类别,但是更改选择不会更改博客文章归档的类别,而是将帖子类别的标题更改为所选值。

鉴于上述绑定(bind),这实际上是有意义的,因此我的下一步是将弹出窗口内容值的绑定(bind)更改为仅 arrangedObjects(无模型键),类似地选择对象。这有效并且改变选择确实改变了 category博客文章到另一篇文章。 但是它不会在弹出菜单中显示类别标题,而是显示 description类别的名称(在核心数据中以类似 <Category 0x1002b6990> (entity: Category; id: .......) 结尾。

这也有道理,所以我引入了自定义NSValueTransformer (不可逆)。这修复了弹出菜单中的项目描述,但随后选择不起作用。我还尝试在选定的对象绑定(bind)上使用转换器,但这只会完全禁用我的弹出窗口(也许需要反向转换,但这会使转换器变得非常复杂)。

我是否遗漏了一些明显的东西 - 这是否可以完全通过绑定(bind)来实现,而无需在 Controller 层上引入额外的代码?

欢迎任何想法!

PS:希望上面的文字有意义:)

最佳答案

我会尝试如下:

NSPopupButton:

  • 内容绑定(bind)到:categoriesArrayController ControllerKey:arrangedObjects
  • 内容值绑定(bind)到:categoriesArrayController ControllerKey:arrangedObjects模型关键路径:标题
  • 所选对象绑定(bind)到:blogObjectController ControllerKey:(empty)模型关键路径:content.category

关于cocoa - 如何设置 NSPopUpButton 的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885137/

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