1

Уважаемый Все, Я борюсь с NSOutline Просмотр выполнения drag-n-drop внутри таблицы с последних 2-3 дней, но не смог получить то, что я делаю неправильно, Это это то, что я сделал до сих пор,NSOutline View Drag-n-Drop Problem

Требование, 1 - Я хочу иметь прозрачное или с некоторым фоновым изображением NSoutlineview на мой взгляд, для этого мне нужно перезаписать метод drawRect NSOutlineView, вот что я сделал

в заголовочном файле

@interface MyCustomOutlineView:NSOutlineView{ 
NSImage *pBackgroundImage; 

} 

- setBackgroundImage:(NSImage *)pImage; 

В исходном файле, я просто перезаписать DrawRect и некоторые другие материалы, чтобы сделать фоновое изображение или сделать его прозрачным, и это работает отлично,

Сейчас, на мой взгляд, я объявляли объект NSOutlineView подобное,

/* * Мой заказ вид будет иметь возможность рисовать градиент и другие эффекты
*/

@interface OutlineParentView:MyCustomView<NSOutlineDataSource>{ 
    MyCustomOutlineView *pOutlineView; 
} 

@property(nonatomic,retain)MyCustomOutlineView *pOutlineView; 

в исходном файле реализован следующий метод, Это мето d будет вызываться из initWIthFrame

#define OutlineViewPrivateDataType "MyOutlinePrivateData" 
-(void)InitOutlineView{ 
    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]; 
    pOutlineView  = [[[CommUICustomOutlineView alloc] initWithFrame:clipViewBounds] autorelease]; 
    NSTableColumn* firstColumn  = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease]; 
    ImageTextCell *pCell = [[ImageTextCell alloc]init]; 
    [firstColumn setDataCell:pCell]; 
    [pCell setDataDelegate:self]; 
    [firstColumn setWidth:25]; 
    [pOutlineView addTableColumn:firstColumn]; 
    [pOutlineView setRowHeight:30]; 
    [pOutlineView setDataSource:self]; 

    /* setData delegate implemented in the MyOutlineView to handle some of event in this 
     interface if i don't write this, then i can't handle the menu event on the 
     Outlineview 
    */ 
    [pOutlineView setDataDelegate:self]; 

    **/* On this line i am getting one warning, saying OutlineParentView doesn't implement  
     NSOutlineView delegate protocol */** 
    [pOutlineView setDelegate:self]; 
    [scrollView setDocumentView:pOutlineView]; 
    /* I don't want group row to be highlighted */ 
    [pOutlineView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleSourceList]; 
    [pOutlineView registerForDraggedTypes: 
     [NSArray arrayWithObjects:OutlineViewPrivateDataType,nil]]; 

    [pOutlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES]; 
    [scrollView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 
     [self addSubview:scrollView]; 
    [self setAutoresizesSubviews:YES]; 
    [self log:@"Outline view created "]; 

} 

Другой важный метод, связанные с Drag-н-Drop реализован, как показано ниже

- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteb oard:(NSPasteboard *)pboard{ 
    [self log:@"write Items"]; 
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:items]; 
    [pboard declareTypes:[NSArray arrayWithObject:OutlineViewPrivateDataType] 
    owner:self]; 
    [pboard setData:data forType:OutlineViewPrivateDataType]; 
    return YES; 
} 

    - (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)index 
    { 
     NSLog(@"validate Drop"); 
     return NSDragOperationEvery; 
    } 
    - (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id <NSDraggingInfo>)info item:(id)item childIndex:(NSInteger)index{ 
     [self log:@"inside accept drop for NSView "]; 
     return YES; 
    } 

я проверил яблочный DragnDrop образец кода, но не может получить то, что я делаю неправильно, я верю, некоторые проблемы с

[pOutlineView setDelegate: сам]

функции, но как решить, что, что я дон «Знаю, я модернизировал недавно от MyTableView к MyOutlineView, недавно я был в состоянии выполнять функцию Drag-nDrop на представлении Пользовательские таблицы, Остальные вещи работают отлично, как DataSource и т.д ...

Заранее спасибо Kind с уважением Rohan

ответ

1

я устанавливал ColumnWidth так перетащить-н-падение работает на ширину, которая была установлена, а не на полной строке моей ошибку :(

[firstColumn setWidth:25]; 

Удаления этой линии работает нормально

Но ребята сталкиваются с некоторыми другими проблемами Regarding NSoutlineView and WriteItem | Drag-and-Drop Problem

 Смежные вопросы

  • Нет связанных вопросов^_^