NSArrayController在插入后选择插入的索引而不反映在NSTableView中

时间:2015-06-15 07:11:35

标签: macos swift cocoa nstableview nsarraycontroller

我有两个NSTableViews绑定到他们自己的NSArrayControllers,用户可以拖动&将项目从表A拖放到表B.现在我希望在插入后选择表B中的已删除项目(以便表格可以滚动到它们)。但它不起作用。

  • 表视图选择索引绑定到IB中的数组控制器索引。
  • 在IB中的阵列控制器上检查
  • Select Inserted Objects
  • 如果我检查arrayControllerB.selectedObjects,它只列出第一个插入的对象,即使插入了更多的对象。
  • 选择永远不会反映在关联的表格视图中。

现在,我可以尝试将新插入的对象临时存储在数组中,然后通过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中新插入的对象的正确数量,但它仍未反映相关表视图中的选择。有人可以让我进入那些一直拒绝工作的琐碎可可行动的神圣圣地吗?

1 个答案:

答案 0 :(得分:1)

我明白了。插入后我不会尝试使用tableView.reloadData()。这将抹掉选择。