2013-06-05 8 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 { 
    // ... 
} 

Как вы это делаете с NSTableView (не UITableView в IOS) в Mac OS, если у меня есть на основе клеток таблицы? Один пример проекта Apple, Inc., который позволяет пользователю перетаскивать элементы, - image-browser, что не совсем помогает, поскольку оно не включает элемент управления NSTableView. Вы используете canDragRowsWithIndexes: atPoint? Я не получаю много поисковых запросов с помощью canDragRowsWithIndexes. Если я запустил поиск «NSTableView reorder», я получаю обращения для сортировки элементов таблицы.

Благодарим вас за советы.

+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 по Corbin Dunn немного старый, но вы должны получить там хорошо.

+0

Спасибо. Я хотел бы получить дополнительную помощь в реализации этих методов. Выполнение поиска для них дает мне небольшую помощь, за исключением того, что мне кажется, что мне нужно зарегистрировать тип перетаскивания для элемента управления tableview. –

+0

Спасибо за ссылку. Да, указанный веб-сайт дает мне много подсказки, хотя самая важная часть, acceptDrop, является неполной. Между тем, образец проекта, доступный по ссылке, которую я опубликовал в первом комментарии, может до некоторой степени дополнить ее (не полностью). –

+0

Я не знаю, как это работает, честно. Но мне как-то удалось перетащить строку с комбинацией кода по ссылке, размещенной Wain и образцом проекта. В наши дни жизнь настолько сложна. –