NSPasteboard ops работает, но не DnD
У меня есть основанное на документе приложение Какао с включенными привязками; это должен быть менеджер текстовых фрагментов. Я разрабатываю в версии системы 10.9 с Xcode 6.2. Главное окно документа имеет разделенный вид с NSTableView
и NSTextView
, Объекты модели, данные которых отображаются в этой таблице, мы будем называть Snippets, текст которых отображается в текстовом представлении; другие данные, такие как даты создания и модификации, также отображаются в таблице. Этот массив управляется подклассом NSArrayController
и массив, в свою очередь, является переменной экземпляра в другом объекте модели (назовем его Shoebox, который содержит коллекцию фрагментов кода), который сам может быть членом массива таких объектов Shoebox в модели документа.
Я создал категорию на оконном контроллере для этого представления с источниками для всех моих операций по монтажу. я имею copy
, cut
, а также paste
работает хорошо. Что я делаю, так это преобразую данные объекта модели в словарь списка свойств (или даже в массив таких словарей), прежде чем помещать данные на монтажную панель в виде сниппета. @"snpt"
, который является единственным типом картона, который я объявляю в этом приложении.
Я реализовал tableView: writeRowsWithIndexes: toPasteboard
в этом файле категории монтажной панели сделал мой оконный контроллер источником данных для табличного представления и реализовал draggingEntered:
а также performDragOperation:
,
Фактически, я могу взять строку таблицы из одного открытого документа и перетащить ее из таблицы, из которой она получена, но я не могу поместить ее в таблицу фрагментов для другого открытого документа, она просто возвращается назад. С зубами показывая.
Этот дизайн перетаскивания работал хорошо для меня, когда у меня было окно документа с представлением таблицы в качестве подпредставления и ничего больше в окне. Я полагаю, что целевое окно не может выяснить, какие данные он получает, кто его отправляет, или какое представление должно получить отбрасывание. В противном случае, я нахожусь в тупике на этом этапе.