2012-07-09 69 views
0

我正在通過Apple OS x開發人員庫學習可可的大綱視圖。示例源代碼是這樣的:爲什麼objectValueForTableColumn爲outlineView調用了那麼多次?

- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item { 
    return (item == nil) ? [FileSystemItem rootItem] : [(FileSystemItem *)item  childAtIndex:index]; 
} 

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { 
    return (item == nil) ? YES : ([item numberOfChildren] != -1); 
} 

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { 
    return (item == nil) ? 1 : [item numberOfChildren]; 
} 

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 
    return (item == nil) ? @"/" : [item relativePath]; 
} 

這將列出我的系統中的所有文件,如樹。 的問題是:
1.如果有32個文件「/」下,該方法

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 

將被調用62次,我不知道爲什麼?
2.方法

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 

沒有關於行參數,那麼如何可可確定項目應該顯示哪一行?

回答

1
  1. 是否存在的 「/」 下32個文件,所述方法

    • (ID)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)TableColumn的byItem:(ID)項

將在顯示每行和每列時被調用。 我假設你有2列,實際上顯示31行

  1. 方法沒有一個有關行參數,那麼可可如何確定項目應該顯示哪一行?

item是一個指向用於填充表的對象的指針。這是需要知道的所有NSOutlineViewDataSource Protocol。內部顯示行的細節NSOutlineView

+0

非常感謝你 – NOrder 2012-07-24 07:40:28

相關問題