问题描述
在我的方法完成后,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)