多数のセルを含むテーブル ビューがあります。(モーダル ビュー コントローラーを使用して) 新しいセルを追加すると、新しく追加されたセルをユーザーに表示したいと思います。これを行うには、テーブル ビューを新しいセルまでスクロールし、選択してすぐに選択解除します。
現在、deselectRowAtIndexPath
一定の間隔を置いて、テーブル ビューに を送信しています。
- (IBAction)selectRow
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
[self performSelector:@selector(deselectRow:) withObject:indexPath afterDelay:1.0f];
}
- (void)deselectRow:(NSIndexPath *)indexPath
{
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
これを行うためのより良い方法があるかどうか疑問に思っています。それはうまく機能しますが、静的タイマーに依存して、時々異なる時間がかかる操作を実行するのは好きではありません (たとえば、テーブルが非常に長い場合)。
編集:デリゲートメソッドが起動されselectRowAtIndexPath:animated:scrollPosition
ないことに注意してください。UITableView
どちらtableView:didSelectRowAtIndexPath:
もscrollViewDidEndDecelerating:
呼び出されません。ドキュメントから:
このメソッドを呼び出しても、デリゲートは
tableView:willSelectRowAtIndexPath:
またはtableView:didSelectRowAtIndexPath:
メッセージを受信したり、UITableViewSelectionDidChangeNotification
オブザーバーに通知を送信したりしません。