Я просто задавался вопросом, был ли простой способ установить NSTableView, чтобы позволить этому переупорядочивать свои строки, не пишущий кода области монтажа. Мне только нужен он, чтобы быть в состоянии сделать это внутренне в одной таблице. У меня нет проблемы, пишущей pboard код, за исключением того, что я абсолютно уверен, что видел, что Интерфейсный Разработчик иметь переключатель для этого где-нибудь / видел, что он работал по умолчанию. Это, конечно, походит на достаточно общую задачу.
Спасибо
Если вы посмотрите на подсказку инструмента в IB, то увидите, что опция, к которой вы обращаетесь к элементам управления
- (BOOL)allowsColumnReordering
, ну, переупорядочивание столбцов. Я не верю, что есть другой способ сделать это, кроме стандартного перетаскивающего API для табличных представлений.
EDIT: ( 2012-11-25 )
Ответ относится к перетаскиванию NSTableViewColumns
; и в то время это был принятый ответ. Не похоже, что он был правильным почти 3 года спустя. Для того, чтобы сделать информацию полезной для поисковиков, я постараюсь дать более правильный ответ.
В конструкторе интерфейса нет настройки, позволяющей перетаскивать строки 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, которые достаточно тщательно их решают, в том числе эта
ссылка Apple на API Drag and Drop.