NSTableView 检测行滚动关闭
NSTableView detect row scrolled off
我有一个基于视图的 NSTableView,每一行都必须生成一些图像,这需要时间。这些是在后台 NSoperationQueue 上完成的,并在(通过绑定)发出图像请求时启动。
当某行滚出屏幕时,如果 NSOperation 仍未决,我希望能够取消它,但我需要检测某行何时不再可见。我应该在我的 CustomTableRowView、CustomTableCellView 或其他东西上寻找 delloc 吗?
我想我需要tableView:willDisplayCell:forTableColumn:row的对立面:
某种 tableView:willHideCell:forTableColumn:row:
Apple 的 TableView 游乐场有评论:
// 如果我们想稍后支持取消已滚动到屏幕外且不再需要的操作,我们将不得不使用 NSBlockOperation 跟踪该块。这将作为练习留给用户。
我可以取消操作,但我不确定如何检测某行何时被滚动。
我相信这可以用
解决
tableView:didRemoveRowView:forRow:
虽然我不确定它是在行滚动结束后立即调用还是稍后调用。
我有一个基于视图的 NSTableView,每一行都必须生成一些图像,这需要时间。这些是在后台 NSoperationQueue 上完成的,并在(通过绑定)发出图像请求时启动。
当某行滚出屏幕时,如果 NSOperation 仍未决,我希望能够取消它,但我需要检测某行何时不再可见。我应该在我的 CustomTableRowView、CustomTableCellView 或其他东西上寻找 delloc 吗?
我想我需要tableView:willDisplayCell:forTableColumn:row的对立面:
某种 tableView:willHideCell:forTableColumn:row:
Apple 的 TableView 游乐场有评论:
// 如果我们想稍后支持取消已滚动到屏幕外且不再需要的操作,我们将不得不使用 NSBlockOperation 跟踪该块。这将作为练习留给用户。
我可以取消操作,但我不确定如何检测某行何时被滚动。
我相信这可以用
解决tableView:didRemoveRowView:forRow:
虽然我不确定它是在行滚动结束后立即调用还是稍后调用。