【发布时间】:2016-01-30 18:53:41
【问题描述】:
我似乎无法找到一种快速简便的方法来简单地重新排序 NSTableView(OSX 中的行,而不是 iOS)中的行。在 iOS 上,我会使用这两种委托方法:
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
MyObject *obj = [model objectAtIndex:fromIndexPath.row];
[model removeObject:obj];
[model insertObject:obj atIndex:toIndexPath.row];
}
是否有任何快速简便的方法可以为 Cocoa 中的 NSTableView 做类似的事情?到目前为止,我只发现了一些使用粘贴板的大量代码示例,对于我来说,这对于简单的重新排序功能来说似乎有点过头了。
【问题讨论】:
-
重新排序数据源并告诉tableview重绘。
-
这部分对我来说很清楚 - 我的问题是实际拖动重新排序。在 iOS 上,这已经实现并自动发生。我想为 NSTableView 重现类似的行为,即单击并按住,然后将行拖动到新位置。
-
它在 OSX 下更通用,因为它用于拖放(即您可以允许将文件从 Finder 拖到您的表格视图中)。查看
NSTableView类参考的Dragging 部分。 -
谢谢,通过@ElTomato 的链接找到了一个简单的解决方案。我发布了我易于复制的代码作为这个问题的解决方案。
标签: objective-c macos cocoa nstableview