如何强制 NSOutlineView 调用 outlineView:numberOfChildrenOfItem

问题描述

在我的方法完成后,NSOutlineView 调用了 outlineview:child:ofIndex: 原因我不清楚。

它不会先调用outlineview:numberOfChildrenOfItem。

由于我在方法中从我的数据中删除一个项目,当索引超过剩余子项的数量时,我在 outlineview:child:ofIndex: 中收到错误

任何变通办法都是可以接受的答案。

解决方法

大纲视图不知道数据何时发生变化,因此您必须保持数据和大纲视图同步。一种方法是插入、移动和删除行:

func insertItems(at indexes: IndexSet,inParent parent: Any?,withAnimation animationOptions: NSTableView.AnimationOptions = [])
func moveItem(at fromIndex: Int,inParent oldParent: Any?,to toIndex: Int,inParent newParent: Any?)
func removeItems(at indexes: IndexSet,withAnimation animationOptions: NSTableView.AnimationOptions = [])

另一种方法是重新加载:

func reloadData()
func reloadItem(_ item: Any?)
func reloadItem(_ item: Any?,reloadChildren: Bool)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...