将基于视图的 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 的相关文章

  • postgresql 数据库在 OS X 上的位置?

    我确信这个问题已经得到解答 但我似乎找不到答案 我使用 Homebrew brew install postgresql 安装了 postgresql 它安装到 usr local Cellar postgresql 后记按照我这样做的说明
  • 是否可以使用“pandoc”将 .tex 文件编译为 PDF?

    是否可以使用 pandoc 编译 tex 文件 我目前正在使用 MacVim 在 MultiMarkdown 中记课堂笔记 这样 当我回到家时 我就可以mmd2tex并使用 TexShop 将 tex 文件编译为 PDF 它效果很好 但这个
  • CGContextDrawImage 绘制非常模糊的大图像

    我正在尝试制作一个可以使用 CGContextDrawImage 绘制大图像 例如 2048 x 1537 图像的一部分的对象 它工作得很好 只是它非常模糊 我正在使用一个 drawingController 它覆盖了drawLayer i
  • 从内存加载动态库

    是否可以从内存而不是从 mac gcc 上的文件系统加载库 在 Windows 中 我使用 MemoryModule 但它显然不跨平台兼容 首先 要做到这一点 我建议您阅读OS X ABI 动态加载器参考 https developer a
  • NSTokenField:标记的不同颜色

    我在我的 xib 中创建了一个 NSTokenField 我想在 tokenField 中显示不同颜色的令牌 含义 一些标记将是蓝色的 其余的将是红色的 根据其内容 那可能吗 以下代码对我不起作用 我希望有人能帮助我 id tokenFie
  • 如何向用户显示我的App当前的项目版本?

    我想将当前版本添加到我的应用程序的 关于 部分 如所附屏幕截图所示 Apple 提供版本控制 如何在您的应用程序中显示这些设置 经过进一步的搜索和测试 我自己找到了解决方案 NSDictionary infoDictionary NSBun
  • OSX 上的 ATI OpenCL SDK

    我拥有 ATI GK 的新 MPB 我很好奇 我是否可以下载 OSX 的 sdk 特别是示例集合和分析器 或者我必须本地运行 Windows Linux 因为我只找到了 Windows 和 Linux 的版本 提前致谢 只要您有 Mac O
  • webview渲染完成后如何截图

    我想在 webview 渲染完成时截图 以下是我的代码 void webView WebView sender didFinishLoadForFrame WebFrame frame if frame sender mainFrame r
  • 是否可以在 Mac OS X 上构建 FreeGLUT?

    我正在做一些关于 OpenGL 的教程 http www arcsynthesis org gltut Basics Tutorial 2001 html那个使用FreeGLUT http freeglut sourceforge net
  • 如何在 OS X 上安装 Intel TBB?

    如何在 OS X 10 6 上正确安装开源版本的英特尔线程构建模块 TBB 开源版本似乎没有正确的安装脚本 http www threadingbuildingblocks org ver php fid 154 http www thre
  • SwiftUI:获取动态背景颜色(深色模式或浅色模式)

    有没有一种方法可以系统地访问 SwiftUI 视图的标准动态背景颜色 无论用户处于浅色模式还是深色模式 例如 我知道以下内容可用于获取主要 例如文本 颜色 let textColor Color primary 但我没有看到任何类似的背景颜
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • tmux 标题字符串不执行 shell 命令

    我的中有以下几行 tmux conf set option g set titles on set option g set titles string whoami H PWD S W F I P 这在过去是有效的 但升级到 2 0 后
  • 如何在Mac上启动Syslogd服务器以接受远程日志记录消息?

    有人知道如何在 Mac 上启动 Syslogd 服务器来接受远程日志记录消息吗 我启动了 Syslogd 但似乎它不接受远程消息 如果我执行 netstat an 看起来 udp 端口 514 正在侦听 但是 如果我使用 nmap 从笔记本
  • CoreMediaIO,错误更新的属性 kCMIODevicePropertyDeviceIsRunningSomewhere

    当某些进程开始使用相机时 我需要接收一个事件 我通过 CMIOObjectGetPropertyData 完成此操作 但它不能正常工作 只有第一次访问时才是正确的值 我还尝试使用 CMIOObjectAddPropertyListenerB
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 如何在 NSTextView 中使用 SPACE 而不是 TAB

    我只知道如何修改 NSTextView 中的制表符宽度 NSMutableParagraphStyle paragraphStyle self defaultParagraphStyle mutableCopy paragraphStyle
  • Xcode 9:“clang:错误:生成多个输出文件时无法指定 -o”

    我刚刚将 Xcode 更新到版本 9 并且在编译时开始收到以下错误消息 该问题似乎与将 优化级别 参数设置为 无 即 O0 进行编译有关 如果我将其设置得更高 错误就会消失 但是当我增加优化时 调试工具将无法正常工作 例如变量跟踪 我查看了
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove

随机推荐