2013-06-05 70 views
3

如果這是一個iOS項目,讓用戶拖動移動選定的行將相對容易。我認爲這是像如何在NSTableView中拖動一行?

- (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 OSNSTableView的(不UITableView的iOS中)做到這一點,如果我有一個基於細胞表?蘋果公司允許用戶拖動項目的一個示例項目是圖像瀏覽器,這不太有用,因爲它不涉及NSTableView控件。你使用canDragRowsWithIndexes:atPoint?我沒有用canDragRowsWithIndexes獲得很多搜索結果。如果我運行搜索「NSTableView重新排序」,我會得到點擊排序表項目。

謝謝您的建議。

+1

我在http://juliuspaintings.co.uk/cgi-bin/paint_css/animatedPaint/074-NSTableView-drag-drop.pl找到了一個示例項目。 –

回答

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 

This guide通過科爾賓鄧恩是有點老了,但應該讓你那裏很好。

+0

謝謝。我希望在實施這些方法方面提供更多幫助。對它們運行搜索除了看起來需要爲tableview控件註冊某種類型的拖拽類型之外,幾乎沒有任何幫助。 –

+0

謝謝你的鏈接。是的,該網站給了我很多線索,儘管最關鍵的部分,acceptDrop,是不完整的。同時,我在第一條評論中發佈的鏈接中提供的示例項目可以在某種程度上(不完全)對其進行補充。 –

+0

老實說,我不知道它是如何工作的。但我不知何故設法通過Wain發佈的鏈接和示例項目中的代碼組合拖動了一行。現在的生活如此複雜。 –