0

アドレス帳から連絡先を取得しようとしています。テーブルビューにデータを表示しています。そのために、最初にテーブルビューセルの高さを設定しています。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

その後、私は実装します

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

これらのデリゲート メソッド内に条件とロジックを記述します。しかし、両方のメソッドのインデックス パスの値が異なるという問題に直面しています。このため、(これらのメソッド内で) アドレス帳をループしている間、両方のデリゲート メソッドが異なる順序で実行されています。どちらの場合もインデックス パスの値が異なるのはなぜですか

4

1 に答える 1

2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathセルが表示される直前にのみ呼び出されます

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPathtableview コンテンツの合計の高さを取得するために、tableview が表示されるときにすべての行に対して呼び出されます。

また、@Vince のコメントにも同意する必要があります。気にする必要があるのは、指定されたインデックス パスに従ってメソッドが正しい値を返すことだけです。

通常、テーブルビューに必要なすべてのデータを、たとえば にロードする必要がありますNSArray。次に、インデックスパスに従って、その配列から正しいオブジェクトを取得します。

于 2012-01-05T14:57:32.177 に答える