Car*_*ter 15 cocoa objective-c nstableview
我有一个NSTableView
必然的NSArrayController
.该NSArrayController
的contentSet
属性绑定到一个NSMutableSet
.一切都很好.
现在我想使用内置的动画NSTableView
来删除行.我可以这样做,- [NSTableView removeRowsAtIndexes:withAnimation:]
并且行快速动画,但是我从tableview中删除的对象仍然在NSMutableSet
支持tableview的时候停止.显然我需要删除它.如果我尝试通过将其取出NSArrayController
的removeObject:
方法,那么物体立即从tableview中表示动画不发生或被中途切断消失.
绑定工作奇迹并使事情变得如此简单,但是当使用绑定和NSTableView
动画时,究竟什么是保持数据源和tableview同步的正确方法?答案还应该解决如何NSTableView
使用动画向行绑定添加行.
模型需要在动画完成后立即更新:
@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 中删除对象的位置。