我只是想知道是否有一种简单的方法来设置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/

10-12 18:25