0

私は[self.messageList scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];cellForRowAtIndexPath で使用していますが、テーブル配列に行が追加されると正常に動作していますが、問題は、一番上の行を見ようとすると自動的に最後の行に戻ることです。そして、すべての行を見ることができません。これをどこで使用するか、またはこれを行うための他のアプローチを教えてください。

4

3 に答える 3

1

cellForRowAtIndexPathメソッドは、持っているすべてのセルに対して呼び出されるわけではありません。TableView の可視セルに対してのみ呼び出されます。スクロールすると、再利用可能なセルを使用するか、新しいセルに追加するかをUITableView尋ねられます。UITableView通常、再利用可能なセルを使用するため、セルの最初の番号を使用し、セルの最後に追加します。最後に別の新しいセルを作成するわけではありません。したがって、スクロールするUITableViewと、セルの最後までスクロールするのではなく、セルの最初の番号にindexPath似ています。indexPathそのため、下にスクロールすることはできませんUITableView

次のコードを使用すると役立つ場合があります.... :)

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

        NSString *CellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row];

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];

            [self.tblView scrollToRowAtIndexPath:indexPath atScrollPosition: UITableViewScrollPositionTop animated: YES];
           // your code 

        }

          // your code 

        return cell;    

    }
于 2012-10-05T07:31:34.410 に答える
0

cellForRowAtIndexPath表示するセルを作成するためのメソッドです。スクロールすると、セルが表示されたときにこのメソッドが呼び出されます。したがって、メソッドと呼ばれる [self.messageList scrollToRowAtIndexPath:indexPath メソッド(内部で呼び出されるcellForRow)も呼び出されるたびに、テーブルがその行までスクロールダウンします!! !

于 2012-10-05T07:14:22.983 に答える
0

インデックス パスの行のセルにこのコードを記述すると、手動でスクロールしようとするたびに呼び出されます。このメッセージはセルを描画するために呼び出され、指定した行に移動します。IF--Else ブロックでインデックスパスを確認し、特定のアクションが発生した場合にのみスクロールしてみてください。

于 2012-10-05T07:10:40.590 に答える