NSTableView и перетаскивание NSOutlineView

sizeof anElement->id позволяет получить размер указателя!

fgets(anElement->id,sizeof anElement->id,stdin);
//                  ^^^^^^^^^^^^^^^^^^^^
//                  size of a pointer
//                  probably 4 or 8

Вы должны выделить достаточно места и прочитать столько байтов

anElement->id = malloc(100);      // error checking omitted for brevity
fgets(anElement->id, 100, stdin); // error checking omitted for brevity
// use anElement->id
free(anElement->id);

память, когда она вам больше не нужна.

8
задан Quinn Taylor 30 June 2009 в 20:05
поделиться

2 ответа

Вам нужен источник данных — AFAIK, Вы не можете заставить это произойти с одной только Привязкой.

Незаконченный Создатель Adium Xtras, который находится под лицензией BSD, включает контроллер массива, который можно установить как источник данных для получения перетаскивания в Приводимом в действие привязкой табличном представлении.

Это требование не может относиться к NSOutlineView и NSTreeController. Я не попробовал это.

5
ответ дан 5 December 2019 в 10:05
поделиться

Страница, с которой Вы связались, довольно соглашается с тем, что необходимо сделать. В таблице источник данных A, реализация registerForDraggedTypes: и tableView:writeRowsWithIndexes:toPasteboard: помещать некоторых частных TableAPasteboardType данные по области монтажа.

В схеме источник данных B реализуйте те же два метода и поместите некоторых частных OutlineBPasteboardType данные по области монтажа.

Наконец, реализация tableView:validateDrop:proposedRow:proposedDropOperation: и tableView:acceptDrop:row:dropOperation: проверять область монтажа на также TableAPasteboardType или OutlineBPasteboardType и внесите соответствующие изменения в свою связанную модель, завися.

Это довольно просто, после того как Вы просто пашете в и делаете это.

7
ответ дан 5 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: