我只是想知道是否有一种简单的方法来设置NSTableView,以使其无需编写任何粘贴板代码即可对行重新排序。我只需要它能够在一个表中内部执行此操作。我没有编写Pboard代码的问题,只是我非常确定我看到Interface Builder在某个地方对此有一个切换/看到它默认工作。当然,这似乎很普通。
谢谢
最佳答案
如果您查看IB中的工具提示,将会看到所引用的选项
- (BOOL)allowsColumnReordering
控件,然后,列重新排序。我认为除了用于表视图的标准拖放API之外,没有其他方法可以执行此操作。
编辑:(2012-11-25)
答案是
NSTableViewColumns
的拖放重新排序。虽然这是当时公认的答案。现在似乎已经过去3年了,它似乎并没有正确。为了使信息对搜索者有用,我将尝试给出更正确的答案。在Interface Builder中,没有设置允许对
NSTableView
行进行拖放重新排序。您需要实现某些NSTableViewDataSource
方法,包括:- tableView:acceptDrop:row:dropOperation:
- (NSDragOperation)tableView:(NSTableView *)aTableView validateDrop:(id < NSDraggingInfo >)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)operation
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
还有其他SO问题可以合理地彻底解决此问题,包括this one
Apple链接到Drag and Drop APIs。
关于macos - 在NSTableView上拖放重新排序行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2121907/