我有两个 NSTableViews
都绑定(bind)到它们自己的 NSArrayControllers
,用户可以将项目从表 A 拖放到表 B。现在我想要表中删除的项目B 在插入后被选择(以便表格可以滚动到它们)。但它不起作用。
- TableView 选择索引绑定(bind)到 IB 中的数组 Controller 索引。
- 在 IB 的数组 Controller 上选中
选择插入的对象
。 - 如果我检查 arrayControllerB.selectedObjects,它仅列出第一个插入的对象,即使插入了更多对象。
- 选择永远不会反射(reflect)在关联的表格 View 中。
现在,我可以尝试将新插入的对象临时存储在数组中,然后通过 setSelectedObjects()
在 arrayControllerB 中选择它们,如下所示...
func insertIndicesToTargetAC(indexSet:NSIndexSet)
{
let a = indexSet.toArray();
var tmpObjects = [AnyObject]();
for i in a
{
let sourceItem = sourceAC.arrangedObjects.objectAtIndex(i);
let obj:NSManagedObject = createNewFromSourceItem(sourceItem);
targetAC.addObject(obj);
tmpObjects.append(obj);
}
sourceAC.removeObjectsAtArrangedObjectIndexes(indexSet);
targetAC.setSelectedObjects(tmpObjects);
println("\(targetAC.selectedObjects)");
}
}
这里,setSelectedObjects()
确实显示了目标 AC 中新插入的对象的正确数量,但它仍然没有反射(reflect)关联 TableView 中的选择。有人可以带领我进入那些顽固拒绝工作的琐碎 cocoa 操作的神圣庇护所吗?
最佳答案
我明白了。我不会在插入后尝试 tableView.reloadData() 。这将删除选择。
关于macos - NSArrayController 在插入后选择插入的索引未反射(reflect)在 NSTableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839245/