Относительно NSoutlineView и WriteItem |Проблема перетаскивания - PullRequest
0 голосов
/ 04 февраля 2011

Для обработки Drag-n-Drop сделали следующее,

-(void)InitMyOutlineView{
 - - - - -  - - - - - - - -  -- - - - - - - -  -
 - - - - - - - - - - - - - -- -- - - - - - - - - 
[pMyOutlineView registerForDraggedTypes:
     [NSArray arrayWithObject:NSStringPboardType]];

/* I tried both Yes and No */   
[pMyOutlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];
- - - -  -- - - - - - -- - - - - - - -- - - - - - 
- -- -- - - - - -- - - - - - - - - - -  - -- - - - 
}

Метод WriteItem, как показано ниже,

- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard{
    [self log:@"write Items"];
    NSString *pStr = [NSString stringWithFormat:@"this is the temp string "];
       [pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
       [pboard setString:pStr forType:NSStringPboardType];
       [self log:@"returning YES"];
       return YES;
}

Теперь я ожидаю, что управление придет к методу AcceptDrop, но точка останова там не достигнута, и в Log / gdb появляется следующий журнал

2011-02-04 16:21:25.435 MyApp[2006:a0f] write Items
2011-02-04 16:21:25.437 MyApp[2006:a0f] returning YES
2011-02-04 16:21:25.439 MyApp[2006:a0f] *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]

и управление не дошло до метода acceptDrop,

Когда я включаю «Stop on Exception», следующий - это стек вызовов, когда он остановился,

#0  0x981b94e6 in objc_exception_throw
#1  0x96ed34cf in -[__NSPlaceholderArray initWithObjects:count:]
#2  0x96efaaa3 in +[NSArray arrayWithObject:]
#3  0x92316dfd in -[NSOutlineView _columnsForDragImage]
#4  0x923f1e32 in -[NSTableView _doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:startRow:]
#5  0x91fea16a in -[NSTableView _performDragFromMouseDown:]
#6  0x91fe89b9 in -[NSTableView mouseDown:]
#7  0x91fe864e in -[NSOutlineView mouseDown:]
#8  0x91f86c68 in -[NSWindow sendEvent:]
#9  0x91e9f817 in -[NSApplication sendEvent:]
#10 0x91e332a7 in -[NSApplication run]
#11 0x91e2b2d9 in NSApplicationMain

Позвольте мне обновить еще одну вещь, в моем виде структуры, у меня есть пользовательская ячейка, которая является ничем иным, как файлом интерфейса Mac ImageTextCell, который я использую.

Может кто-нибудь подсказать, пожалуйста, что я делаю не так

С уважением Rohan

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

[myoutlineView setOutlineColoumn: firstColumn] отсутствовал, когда я добавил, то его tarted работает

0 голосов
/ 04 февраля 2011

Убедитесь, что в меню «Отладка» Xcode включено «Остановка исключений Objective-C», затем запустите приложение под отладчиком (с включенными точками останова).Отладчик остановится, когда возникнет исключение, и тогда вы сможете выяснить, где вы пытаетесь создать массив с nil объектом.

Мне кажется невероятным, что код, который вы показали, является источникомпроблемы, поскольку вы передаете строку, глобально определенную в платформе AppKit.

...