将基于视图的 NSOutlineView 绑定到 Core Data

2024-03-19

我正在尝试将新的基于视图的 OutlineView 实现为我的 Mac 应用程序中的源列表。不过,我无法获取要显示的值,因此我从核心数据应用程序模板制作了一个小型测试应用程序,但也无法让它在其中正常工作。

我在数据模型中定义了两个简单的类;我们称他们为“父母”和“孩子”。Parent具有单个属性“名称”和单个关系“孩子”。name是一个可选字符串,并且children是一个可选的多对多关系Child. Child具有相同的“名称”属性和一对一的“父”关系,这是相反的children。我为这两个生成了自定义类,并在中编写了一个存根Child for children返回nil.

我将源列表从对象库拖到我的 XIB 上,然后放入树控制器中。树控制器Children键路径设置为“children”,处于实体名称模式,“Parent”作为实体名称,选中“准备内容”,并将其托管对象上下文设置为应用程序委托的上下文。树控制器是大纲视图的数据源,我使用“objectValue.name”键路径将数据单元格的文本视图绑定到表单元格视图。

in -applicationDidFinishLaunching:我创建两个Parent实例,其中一个带有Child,并分配name每个对象的属性。

实际问题

现在,完成该设置后,我会在源列表中显示行,但文本字段为空,即使它们已绑定。我认为我不需要做任何其他事情,因为我正在使用绑定,并且我相当确定绑定到objectValue财产是正确的事情。出了什么问题?

如有必要,我可以提供更多详细信息,但我很确定这涵盖了我所做的一切。


哇,就像我两周前问的这个问题一样。

无论如何,如果你像我一样,问题是,
对于基于视图的NSOutlineViews,您需要实施

- (NSView *)outlineView:(NSOutlineView *)outlineView
     viewForTableColumn:(NSTableColumn *)tableColumn
                   item:(id)item;

委托方法并返回NSTableCellView你设置了,
或者他们只会给你一个空行。最简单的方法就是调用

[outlineView makeViewWithIdentifier:@"MyCell" owner:self]

替换MyCell与您输入的任何内容作为“用户界面项目标识符”
在身份检查器中为您NSTableCellView.

Objective-C:

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
   return [outlineView makeViewWithIdentifier:@"MyCell" owner:self];
}

Swift:

func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
    return outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("MyCell"), owner: self)
}

2018 年 8 月 2 日更新:

实际上,您不需要设置委托。这是我如何让它工作的(测试过NSTreeController,但应该与NSArrayController以及):

  • 将每个列对象绑定到arrangedObjects(没有模型密钥路径)
  • 将最里面的自定义视图(例如标签字段)绑定到objectValue.yourCustomValue
  • 应该不是必需的,但如果这不起作用,请尝试设置列和列的标识符TableCellView。确保两个标识符相同。对具有不同标识符的其余列重复此操作。

截屏:基于视图的 NSOutlineView 的绑定 https://i.stack.imgur.com/3ikla.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将基于视图的 NSOutlineView 绑定到 Core Data 的相关文章

  • gdb 声称它不知道如何运行

    我在 Mac Pro 上的 Mac OS X 10 6 6 上使用 Xcode 3 2 3 来构建 GrowlTunes 的修订版 5fd480ef577f咆哮开发存储库 http growl info hg growl developme
  • xcode 4 垃圾收集已删除?

    我正在学习 Xcode 和 Objective C 但是我正在阅读的书使用的是旧版本 3 2 的 Xcode 其中一章完全致力于内存和泄漏 说我需要通过 项目设置 gt 构建 打开垃圾收集 但是 我找不到垃圾收集设置 它已被删除还是我只是错
  • NSView 中 CALayers 的简单示例

    我正在尝试将多个 CALayer 添加到 NSView 但显示时我的视图仍然为空 这是我的代码 id initWithFrame NSRect frame self super initWithFrame frame if self sel
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 有 Mac 版的 IE 测试器吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Xcode 服务器 ibtool 构建失败

    我一直在研究使用 Xcode Server 进行 CI 我已经解决了一些问题 但现在有一个问题困扰着我 构建似乎工作正常 但在测试阶段挂起 并在日志底部生成以下内容 2015 11 25 14 44 45 650 xcodebuild 58
  • 如何正确释放附加 C 数组中的内存?

    我只是想弄清楚为什么下面的代码会泄漏内存 并且我有一种有趣的感觉 我没有正确释放数组内存 这是一个更广泛的 Objective C 应用程序中的 C 函数 我不是 C 语言的本地人 我尝试过在数组上使用 free 但有一种感觉这不是全部故事
  • 为什么 tkinter 在 Mac 上失败

    我在 Mac 上使用 tkinter 但是当我使用以下简单代码时 计算机将重新启动 import tkinter as tk window tk Tk 问题是什么 谢谢你 Mac 莫哈韦沙漠 版本 10 14 6 tkinter 版本 8
  • 如何在 Objective-C + Cocoa 中创建自定义无边框 NSWindow?

    首先我要说的是 这是我的第一个真正的 Cocoa 应用程序 这是一个简单的应用程序 几乎在无边框窗口中显示我的网站 我目前创建无边框窗口的方式使用以下内容 void awakeFromNib window setStyleMask NSBo
  • 在 Safari for Lion (OS X 10.7) 中设置滚动条颜色

    Lion 中的新滚动条似乎会根据 body 元素的背景颜色调整 Safari 中的颜色 有没有办法手动设置滚动条是深色还是浅色 我知道有 webkit CSS 选项来设置滚动条的样式 这实际上早于新的 Lion 滚动条 我使用该方法的唯一问
  • 在 OSX 上,Java 线程在不关注时会进入睡眠状态

    我正在编写一个程序来监听系统剪贴板的更改 侦听器在单独的线程上运行 并在剪贴板的内容更改时执行某些操作 例如写入文件 我正在使用轮询剪贴板剪贴板所有者界面 http www javapractices com topic TopicActi
  • 使用 librsvg / rsvg 通过 ImageMagick 转换 SVG 图像

    我知道这个问题在这里有几个答案版本 如下所示 ImageMagick 将 SVG 转换为 PNG 无法在启用 RSVG 的情况下工作 https stackoverflow com questions 11592085 imagemagic
  • tkinter/py2app 创建的应用程序在初始启动时不显示窗口

    我遇到了一个问题 即启动使用 Tkinter 创建并由 py2app 打包的 python 应用程序不会立即显示应用程序窗口 我在启动后显示窗口的唯一方法是单击扩展坞中的应用程序图标 This guy https stackoverflow
  • 如何从终端启动 applescript.scpt 文件并传递术语/变量?

    我有一个苹果脚本 它可以执行以下操作 using terms from application Quicksilver on open theseitems repeat with aitem in theseitems display d
  • Objective C 中最好的多线程方法?

    我正在开发一个 iPad 应用程序 目前正在努力寻找多线程的最佳方法 让我用一个简化的例子来说明这一点 我有一个包含 2 个子视图的视图 一个目录选择器和一个包含所选目录中所有图像缩略图的图库 由于 下载 和生成这些缩略图可能需要相当长的时
  • 使用 XCode 进行测试时,MacOS 应用程序本地通知未显示

    我尝试将横幅通知生成器添加到我的 macOS swift 应用程序中 但在 XCode 中运行测试时 横幅没有出现 并且通知中心中也没有任何新通知可见 我计算机上的其他应用程序会定期生成通知 我错过了什么 我已按要求授予许可 我的应用程序委
  • 带有存储在文件中的通配符的 grep

    我希望 grep 通过读取需要从文本文件中过滤掉的内容来过滤掉行 这是我给 grep 的内容 它存储在foo txt Users 1337 X Users 1337 R Users 1337 W 这是它应该过滤的内容 它存储在bar txt
  • 读取 DOMDocument 并使用 CSS 选择器查找元素

    我必须将 Android 应用程序转换为 iOS 该应用程序深入使用了jsoup http jsoup org 图书馆和element select cssQuery http jsoup org apidocs org jsoup nod
  • 一段简单的代码,在 GC 下运行良好,但在 ARC 中开始崩溃

    我有以下简单的 检查我的应用程序是否设置为在登录时启动 代码 它在垃圾收集下工作得很好 然而 自从我开始使用 ARC 并插入了 bridge 根据需要 代码开始随机且不可预测地崩溃 根据堆栈跟踪 代码在某些期间崩溃CFRelease 有什么
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但

随机推荐