2012-01-05 11 views
0

私のアドレス帳から連絡先を取得しようとしています。私は自分のテーブルビューにデータを表示しています。最初に、私はtableviewcellの高さを設定しています。異なる値を持つテーブルビューデリゲートメソッドのインデックスパス

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

その後、私は

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

を実装私はこれらのデリゲートメソッド内部の条件とロジックを記述します。しかし、私は両方のメソッドのインデックスパスの値が異なるという問題に直面しています。このため、私がアドレス帳をループしている間(これらのメソッド内で)、両方のデリゲートメソッドが異なる順序で実行されています。テーブルビューは、テーブルビューの高さの合計を取得するために提示されたときにセルが

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPathは、すべての行に対して呼び出されたビューに入る直前にインデックスパスは

+3

あなたは両方のデリゲートメソッドのために気にすべき唯一のことは、正しい値を返している**意味**与えられたインデックスパス –

答えて

2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathのみが呼び出された両方の場合で異なる値を持っていることを理由コンテンツ。

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

通常、テーブルビューに必要なすべてのデータをロードする必要があります(例:NSArray)。次に、indexpathに従って、その配列から正しいオブジェクトを取得します。

+0

によると、両方のインデックスパスは異なる右だろうか? –

+1

いいえ、indexpathはテーブルビューの行の場所です。 2つのセクションがあり、各セクションに4つの行がある場合。そして、最初のセクションの最初の行のindexpathは '{0,0}'でなければなりません。つまり、 'indexpath.section == 0'と' indexpath.row == 0'です。 – rckoenes

+0

両方のメソッドのindexpath.rowをログに表示します。しかし、私は両方のケースで異なる値を得ています –

関連する問題