Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 NSOutlineView numberOfRows不';t在重新加载数据后增加_Objective C_Macos_Cocoa_Nsoutlineview - Fatal编程技术网

Objective c NSOutlineView numberOfRows不';t在重新加载数据后增加

Objective c NSOutlineView numberOfRows不';t在重新加载数据后增加,objective-c,macos,cocoa,nsoutlineview,Objective C,Macos,Cocoa,Nsoutlineview,我想计算刚刚添加到NSOutlineView的单元格的大小。为此,我将其添加到数据源中,然后在NSOutlineView上调用reloadData。但是,出于某种原因,除了第一行之外,我无法检查reloadData之后的单元格。代码如下所示: [m_dataSource add:...]; // first add item to my data source [m_outlineView reloadData]; int nRows = (int) [m_outlineView num

我想计算刚刚添加到
NSOutlineView
的单元格的大小。为此,我将其添加到数据源中,然后在
NSOutlineView
上调用
reloadData
。但是,出于某种原因,除了第一行之外,我无法检查
reloadData
之后的单元格。代码如下所示:

[m_dataSource add:...];  // first add item to my data source
[m_outlineView reloadData];  

int nRows = (int) [m_outlineView numberOfRows];
NSCell *cell = [m_outlineView preparedCellAtColumn:0 row:nRows-1];
NSSize size = [cell cellSize];
出于某种原因,
nRows
在这里总是1,不管我添加了多少行。因此,我只能查询第一行中第一个单元格的大小

我看到的行为可能与以下事实有关:第一行是可扩展行,而所有其他行都是第一行的子行。但是,我已经检查过了

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item;
正确返回项目的
YES
。所有内容也正确显示在
NSOutlineView
中。只是,
numberOfRows
似乎没有得到更新,即使我在它之前调用了
reloadData


有什么问题吗?

这能回答你的问题吗?不幸的是,事实并非如此。即使使用
reloadItem:nil reloadChildren:YES
而不是
reloadData
numberOfRows
仍然返回1,并且除了第一行中的单元格外,我无法检查任何单元格。您是否调试了数据源,以验证实际返回的预期数据(即多于1个项目)?它扩大了吗?根级别上有多少项?@ATV:Oops,对不起,是的,我把
isItemExpandable
方法混淆为指示节点应该展开,而它只指示节点是否可展开。使用
expandItem
手动展开节点可以解决此问题。抱歉搞混了。@Andreas太棒了!