【发布时间】:2018-06-03 18:01:26
【问题描述】:
我有一个 NSOutlineView。我已经设置了委托和数据源。我做outlineView.reloadData()后它会正确显示所有数据
你可以像这样描绘我的大纲视图:
A 室
- 灰
- 布洛克
B 室
- 朦胧
- 奥克教授
我对数据(不是大纲视图)进行了一些编辑,并将“Misty”移动到房间 A。
A 室
- 灰
- 布洛克
- 迷雾
B 室
- 奥克教授
我做outlineView.reloadData()后,它会正确显示更新的数据。
然后,我改变
outlineView.reloadData()
与
outlineView.moveItem(at: 0, inParent: room[1], to: 2, inParent: room[0])
但是什么也没发生。我检查了数据源,没有调用数据源。仅当我执行 outlineView.reloadData() 时才会调用它。
我也尝试过outlineView.reloadItem(),但也没有用。
知道为什么outlineView.moveItem() 不起作用吗?
【问题讨论】:
-
大纲视图为什么要调用数据源?项目的数据不会改变。我试过这个(作为一个 Swift 练习,item 是一个 Swift 类)并且
moveItem()确实有效,带有动画。 -
就我而言,我必须添加 Hashable 协议。你的类是否符合 Hashable 协议?
-
我试过了,它可以工作,即使所有对象都返回相同的哈希值。
hashValue没有被调用。你能在一个小测试项目中重现这个问题吗?
标签: cocoa nstableview appkit nsoutlineview