2011-08-17 17 views
4

私はCocoaを初めて使い慣れていますが、経験豊かなプログラマー(主にC、C++、.NET、QT)です。私はソースリストを実装しています。ソースリストは、通常はファインダーとiTunesで表示されるサイドバーです。私は非常に基本的なテストケースを使用してそうしようとしています。したがって、CoreData、TreeControllerなどはありません。NSOutlineViewとNSTableCellViewを使用した基本的なソースリストの実装

私はNSOutlineViewDataSourceを実装しました。以下は私のコードです:

@implementation OutlineViewDataSource 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 

     header = [[NSString alloc] initWithString: @"Header"]; 
     child1 = [[NSString alloc] initWithString: @"Child 1"]; 
     child2 = [[NSString alloc] initWithString: @"Child 2"]; 
     child3 = [[NSString alloc] initWithString: @"Child 3"]; 
    } 

    return self; 
} 

- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item 
{ 
    if (item == nil) 
    { 
     return header; 
    } 
    else 
    { 
     if (index == 0) 
     { 
      return child1; 
     } 

     if (index == 1) 
     { 
      return child2; 
     } 

     if (index == 2) 
     { 
      return child3; 
     } 
    } 

    return nil; 
} 

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item 
{ 
    if (item == nil) 
    { 
     return YES; 
    } 

    if (item == header) 
    { 
     return YES; 
    } 

    return NO; 
} 

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item 
{ 
    if (item == nil) 
    { 
     return 1; 
    } 

    if (item == header) 
    { 
     return 3; 
    } 

    return 0; 
} 

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 
{ 
    if (item == nil) 
    { 
     return @""; 
    } 

    return item; 
} 

@end 

私のxibファイルは基本的なものです。そのソースリスト(NSOutlineViewはソースリストのように構成されています。また、あらかじめ設定された2つのNSTableCellViewsが付属しています)

このコードをソースリスト私はソースリストをビューベースに設定すると、私は奇妙な動作をします。NSTableCellViewsは表示されません。しかし、展開ボタンは、表示されません。さらに、objectValueForTableColumn関数は実行されません。別のNSTableCellViewをxibのソースリストに追加すると、NSTableCellViewが表示され、しかし、私はアイコンやテキストを変更することはできません、objectValueForTableColumnはまだ実行されません。私はviewForTableColumnを実装しようとしましたが、そのf召喚されたこともない。

私は間違っています。私は近くにいるように感じますが、私は何か基本的なものを欠いています。前もって感謝します。

+0

問題を解決できましたか?私は同じ問題に遭遇しました。 –

答えて

-1

これは、viewForTableColumnが呼び出されないという現象です。それは本当にその仕事をする必要があります。さもなければ空白のセルが得られます。私はまったく同じ問題を抱えていた。

NSOutlineViewのデリゲートがviewForTableColumnを実装するクラスにバインドされていることを確認していますか?

関連する問題