使用带有绑定的NSTableView动画

Car*_*ter 15 cocoa objective-c nstableview

我有一个NSTableView必然的NSArrayController.该NSArrayControllercontentSet属性绑定到一个NSMutableSet.一切都很好.

现在我想使用内置的动画NSTableView来删除行.我可以这样做,- [NSTableView removeRowsAtIndexes:withAnimation:]并且行快速动画,但是我从tableview中删除的对象仍然在NSMutableSet支持tableview的时候停止.显然我需要删除它.如果我尝试通过将其取出NSArrayControllerremoveObject:方法,那么物体立即从tableview中表示动画不发生或被中途切断消失.

绑定工作奇迹并使事情变得如此简单,但是当使用绑定和NSTableView动画时,究竟什么是保持数据源和tableview同步的正确方法?答案还应该解决如何NSTableView使用动画向行绑定添加行.

poi*_*tum 8

模型需要在动画完成后立即更新:

@IBAction func onRemoveClick(sender: AnyObject?) {
    let selection = listController.selectionIndexes
    NSAnimationContext.runAnimationGroup({
        context in
        self.tableView.removeRowsAtIndexes(selection, withAnimation: .EffectFade | .SlideUp)
    }, completionHandler: {
        self.listController.removeObjectsAtArrangedObjectIndexes(selection)
    })
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中使用绑定.在OS X 10.9,10.10和10.11上测试过.


reg*_*633 -1

从评论中对你的问题的讨论来看,似乎没有一个简单的“绑定”适当的答案。因此,作为一种解决方法,您不能在开始动画后立即发出一个简单的“performSelector:withObject:afterDelay”命令吗?显然,延迟时间近似于动画所花费的日志,并且在选择器中是从 NSMutableSet 中删除对象的位置。