0

内部でデリゲートのnumberOfRowsInSectionメソッドを呼び出していますが、Bad Access Errorが発生します。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

ここで実際の値を返す必要があります。したがって、呼び出す代わりに[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 に答える
1

それは正常です.. その瞬間、あなたUITableViewは創造されています。UITableViewビルドされる前に、関連するメソッドを呼び出すべきではありません。セルの高さを取得するには、他のメカニズムに依存する必要があります。

于 2012-12-17T10:45:48.847 に答える
0

あなたが呼んでいます

[tableView numberOfRowsInSection:section];

あなたは電話しているはずです

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