首页 > 解决方案 > 如果同一个子对象多次存在,如何确保 NSOutlineView.parent(forItem:) 返回正确的父对象?

问题描述

我刚刚在使用 NSOutlineView 时遇到了一个问题,想知道是否有人有解决方案。

我有一个项目层次结构,最低节点是可以出现在多个位置的对象。

例如:

现在,如果用户选择列表中的“Toyota”项目,然后我尝试使用 outlineView.parent(forItem:) API 找到所选项目的父项目,它将始终返回相同的父项目,大概是第一个它遭遇。

从数据源加载数据时,outlineView 似乎没有独立跟踪父项。

据推测,克服这个问题的唯一方法是在每个节点上创建某种唯一的包装对象,可能是一个结构来保存公共对象。

任何人都知道 NSOutlineView 使用什么方法来查找给定对象的父对象?

标签: nsoutlineview

解决方案


来自 NSOutlineView 类参考(强调我的):

大纲视图具有以下特点:

  • 用户可以展开和折叠行。

  • 大纲视图中的每个项目都必须是唯一的。为了使折叠状态在重新加载之间保持一致,项目的指针必须保持不变,并且项目必须保持 isEqual: 相同。


推荐阅读