0

我在内部调用委托的numberOfRowsInSection方法,但它给了我一个错误的访问错误UITableViewheightForRowAtIndexPath

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    ...
    NSLog(@"number of rows in section: %i", [tableView numberOfRowsInSection:[indexPath section]]);
    ...
}

谁能告诉我这里有什么问题?

4

4 回答 4

2

您正在调用委托方法。

当您调用此方法时,它会调用相关的委托方法,如cellForRowAtIndexPathheightForRowAtIndexPath

它会导致无限循环,这就是它崩溃的原因。

于 2012-12-17T10:46:25.703 回答
1

这很正常.. 在那一刻,你UITableView正在被创造。UITableView在构建之前,您不应调用与您的 , 相关的方法。您应该依靠其他机制来获取单元格的高度。

于 2012-12-17T10:45:48.847 回答
1

您需要在此处返回一个实际值。因此,与其打电话,不如[tableView numberOfRowsInSection:[indexPath section]]简单地再次做同样的事情。

为了不重复您的代码,您可以创建一个可以在两个地方调用的辅助方法,即您的heightForRowAtIndexPath方法和numberOfRowsInSection方法:

- (int) myNumberOfRowsMethod{
    // Here you would usually have some underlying model 
    return [self.myContactsOrWhateverArray count];
}
于 2012-12-17T10:51:40.367 回答
0

你在打电话

[tableView numberOfRowsInSection:section];

你应该打电话

[self numberOfRowsInSection:section];
于 2012-12-17T10:49:24.050 回答