Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么outlineView会多次调用objectValueForTableColumn?_Objective C_Cocoa - Fatal编程技术网

Objective c 为什么outlineView会多次调用objectValueForTableColumn?

Objective c 为什么outlineView会多次调用objectValueForTableColumn?,objective-c,cocoa,Objective C,Cocoa,我正在学习Apple OS x开发者库提供的cocoa大纲视图。示例源如下所示: - (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item { return (item == nil) ? [FileSystemItem rootItem] : [(FileSystemItem *)item childAtIndex:index]; } - (BOOL)outl

我正在学习Apple OS x开发者库提供的cocoa大纲视图。示例源如下所示:

- (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 
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 
将被呼叫62次,我不知道为什么?
2.方法

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item 
没有关于行的参数,那么cocoa如何确定项目应显示的行

  • 如果“/”下有32个文件,则该方法

    • (id)outlineView:(NSOutlineView*)outlineView objectValueForTableColumn:(NSTableColumn*)tableColumn byItem:(id)item
  • 将在显示时为每行和每列调用我假设您有2列,实际显示了31行

  • 该方法没有关于行的参数,那么cocoa如何确定应该显示项目的行
  • 项是指向用于填充表的对象的指针。这就是
    NSOutlineViewDataSource协议
    需要知道的全部内容。
    NSOutlineView内部显示行的详细信息