macos - NSArrayController 在插入后选择插入的索引未反射(reflect)在 NSTableView 中

标签 macos swift cocoa nstableview nsarraycontroller

我有两个 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/

相关文章:

javascript - 有没有办法通过浏览器Javascript检测Mac上触控板、魔术鼠标或魔术触控板的多点触控事件?

ios - Xcode 不会打开 ContentViewController 但会停留在启动屏幕上

ios - 无法添加 UIImageView Xcode Swift

swift - 检测到 NSTextView 缺少约束

macos - 在应用程序商店之外分发 MacOS 应用程序 - 安全与盗版

objective-c - 在 Xcode 4 中添加自定义对象

ios - 使用 Mac Hotspot 进行移动设备的自动化测试

bash - 等待进程结束或用户输入继续

sql - 如何在 Azure SQL 数据库中存储字典? ( swift )

objective-c - 如何找出NSEvent点击事件来自mouseClick或trackpad Click?