私は[self.messageList scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
cellForRowAtIndexPath で使用していますが、テーブル配列に行が追加されると正常に動作していますが、問題は、一番上の行を見ようとすると自動的に最後の行に戻ることです。そして、すべての行を見ることができません。これをどこで使用するか、またはこれを行うための他のアプローチを教えてください。
3 に答える
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;
}
cellForRowAtIndexPath
表示するセルを作成するためのメソッドです。スクロールすると、セルが表示されたときにこのメソッドが呼び出されます。したがって、メソッドと呼ばれる [self.messageList scrollToRowAtIndexPath:indexPath
メソッド(内部で呼び出されるcellForRow
)も呼び出されるたびに、テーブルがその行までスクロールダウンします!! !
インデックス パスの行のセルにこのコードを記述すると、手動でスクロールしようとするたびに呼び出されます。このメッセージはセルを描画するために呼び出され、指定した行に移動します。IF--Else ブロックでインデックスパスを確認し、特定のアクションが発生した場合にのみスクロールしてみてください。