nsoutlineview - 如果同一个子对象多次存在,如何确保 NSOutlineView.parent(forItem:) 返回正确的父对象?
问题描述
我刚刚在使用 NSOutlineView 时遇到了一个问题,想知道是否有人有解决方案。
我有一个项目层次结构,最低节点是可以出现在多个位置的对象。
例如:
国家
镇
- 汽车制造商
美国
芝加哥
- 丰田
达拉斯
- 丰田
现在,如果用户选择列表中的“Toyota”项目,然后我尝试使用 outlineView.parent(forItem:) API 找到所选项目的父项目,它将始终返回相同的父项目,大概是第一个它遭遇。
从数据源加载数据时,outlineView 似乎没有独立跟踪父项。
据推测,克服这个问题的唯一方法是在每个节点上创建某种唯一的包装对象,可能是一个结构来保存公共对象。
任何人都知道 NSOutlineView 使用什么方法来查找给定对象的父对象?
解决方案
来自 NSOutlineView 类参考(强调我的):
大纲视图具有以下特点:
用户可以展开和折叠行。
大纲视图中的每个项目都必须是唯一的。为了使折叠状态在重新加载之间保持一致,项目的指针必须保持不变,并且项目必须保持 isEqual: 相同。
推荐阅读
- angular - 如何查看 Angular 2+ 中的运行错误?
- c# - 如何在 Movilizer 日历屏幕中仅启用月份和年份?
- android - 如何在 Android 上更改阴影高度颜色?
- regex - 用于在引号之间捕获的正则表达式,包括跳过的引号
- c# - 我的 Unity 面板不是我想要的颜色
- javascript - 我想动态导入图像,但我运行项目我没有看到图像
- google-sheets - 我们可以使用谷歌表单脚本验证来自谷歌表单的响应是否存在输入的值?
- java - 单选按钮在 Android 中返回错误的值
- amazon-dynamodb - 有没有办法在不获取整行的情况下获取 Dynamodb 中 SET 类型的属性的大小?
- javascript - JS innerHTML 不显示