4

如果它是一个iOS项目,让用户拖动选定的行会相对容易。我认为这有点像

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleNone;
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (BOOL)tableView:(UITableView *)tableview canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    // ...
}

如果我有一个基于单元格的表格,你如何在Mac OS中使用NSTableView(不是 iOS 中的 UITableView)来做到这一点?Apple, Inc. 的一个允许用户拖动项目的示例项目是image-browser,它并没有太大帮助,因为它不涉及 NSTableView 控件。你使用canDragRowsWithIndexes :atPoint 吗?我没有通过 canDragRowsWithIndexes 获得很多搜索结果。如果我搜索“NSTableView reorder”,我会得到排序表项的命中。

感谢您的意见。

4

1 回答 1

3

使用这些方法:

- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id < NSDraggingInfo >)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation

- (NSDragOperation)tableView:(NSTableView *)aTableView validateDrop:(id < NSDraggingInfo >)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)operation

- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard

Corbin Dunn 的这本指南有点旧,但应该能让你顺利到达那里。

于 2013-06-05T12:50:14.123 回答