2013-06-19 8 views
5

私はNSOutlineViewを持っています。行をクリックすると、そのアイテムを展開/折りたたむことができます。NSOutlineViewは折りたたまれていません。

if ([self.outlineView isItemExpanded:item]) { 
     NSLog("Will collapse item : %@", item); 
     [[self.outlineView animator] collapseItem:item]; 
    } 
    else { 
     [[self.outlineView animator] expandItem:item]; 
    } 

アイテムをエキスパンドすると、アイテムが折りたたまれても機能しません。 collapseItem:を実行する前にログを取得しましたが、項目が正しいです。デリゲートメソッド- (BOOL)outlineView:(NSOutlineView *)outlineView shouldCollapseItem:(id)itemも呼び出されませんでした。

この問題は何時間も続いています。これを引き起こす原因は何ですか?

答えて

9

私はそれを理解しました。その項目に- (BOOL)outlineView:(NSOutlineView *)outlineView shouldShowOutlineCellForItem:(id)itemがYESを返す場合にのみ、アイテムが折りたたまれているようです。それ以外の場合は、アイテムのみを展開できます。

0

これは、私の場合は

id item = [sender itemAtRow:[sender clickedRow]]; 
if ([self outlineView:sender isItemExpandable:item]) { 
    if ([sender isItemExpanded:item]) 
     [sender collapseItem:item]; 
    else 
     [sender expandItem:item]; 
} 
0

私にとって本当にうまく動作します、私のアイテムはので、それらの機能が動作しませんでした構造体です。次にクラスに変更する必要があります。このコードを使用すると、構造体に「item = outlineView.item(atRow:selectedIndex)」という値がコピーされ、新しいオブジェクトが作成されるためです。したがって、outlineviewはアイテムを認識できません。 =>動作しません。

関連する問題