В моем приложении NSOutlineView используется, как показано ниже, 1 - Использование CustomOutlineView, потому что я хочу, чтобы контролировать NSOutlineView фон,NSOutlineView Drag-н-Drop
2 - Использование CustomeCell, потому что я должен быть настроить Cell
Заголовочный файл: MyListView.h
/*
MyUICustomView is the Subclass from NSView and this is i need to have
for some other my application purpose
*/
@interface MyListView : MyUICustomView<NSOutlineViewDataSource>
{
// MyCustomOutlineview because, i need to override DrawRect Method to have
// customized background
MyCustomOutlineView *pMyOutlineView;
}
@property(nonatomic,retain)MyCustomOutlineView *pMyOutlineView;
, а также я должен быть в состоянии перетащить-н-падение в режиме структуры, за то, что перетащить-н-капли я сделал следующее,
-(void)InitOutlineView{
// Creating outline view
NSRect scrollFrame = [self bounds];
NSScrollView* scrollView = [[[NSScrollView alloc] initWithFrame:scrollFrame] autorelease];
[scrollView setBorderType:NSNoBorder];
[scrollView setHasVerticalScroller:YES];
[scrollView setHasHorizontalScroller:NO];
[scrollView setAutohidesScrollers:YES];
[scrollView setDrawsBackground: NO];
NSRect clipViewBounds = [[scrollView contentView] bounds];
pMyOutlineView = [[[MyCustomOutlineView alloc] initWithFrame:clipViewBounds] autorelease];
NSTableColumn* firstColumn = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease];
#ifdef ENABLE_CUSTOM_CELL
// Becuase cell should have Image, Header Info and brief detail in small font,
// so i need to have custom cell
ImageTextCell *pCell = [[ImageTextCell alloc]init];
[firstColumn setDataCell:pCell];
// SO i can fill the data
[pCell setDataDelegate:self];
# endif
[pMyOutlineView setDataSource:self];
/* This is to tell MyCustomOutlineView to handle the context menu */
[pMyOutlineView setDataDelegate:self];
[scrollView setDocumentView:pCTOutlineView];
[pMyOutlineView addTableColumn:firstColumn];
[pMyOutlineView registerForDraggedTypes:
[NSArray arrayWithObjects:OutlinePrivateTableViewDataType,nil]];
[pMyOutlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES];**
}
и поддержка перетащить-н-падение Реализован следующий метод
- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard{
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:items];
[pboard declareTypes:[NSArray arrayWithObject:OutlinePrivateTableViewDataType] owner:self];
[pboard setData:data forType:OutlinePrivateTableViewDataType];
return YES;
}
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)index{
// Add code here to validate the drop
NSLog(@"validate Drop");
return NSDragOperationEvery;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id <NSDraggingInfo>)info item:(id)item childIndex:(NSInteger)index{
NSLog(@"validate Drop");
}
, но до сих пор, когда я пытаюсь перетащить ряд NSOutlineView ничего не происходит, даже я пытался отладить с помощью NSLog, но я не мог» t см. любой журнал из выше функции, У меня отсутствует какой-либо важный метод? для поддержки Drag-n-drop
Код, который вы * не * t - это именно тот код, который нам нужно видеть. Мы не можем помочь вам исправить ваш код перетаскивания, если вы его не публикуете. Подсказка: метод ... writeRows ... - это минимум, необходимый для успешного завершения перетаскивания. –
Привет, Джошуа, я загружу код, но WriteRow также мне нужно реализовать для outlineView, потому что я видел прототип, его только для TableView – Amitg2k12
@Joshua, добавили код для метода, моя проблема в том, что точка останова даже не попадает для ни одного из этих методов, поэтому я думаю, что мне не хватает некоторых методов делегирования импорта, PN: мне нужно поддерживать Drag-n-Drop с открытым контуром – Amitg2k12