私はいくつかのセルを持つテーブルビューを持っています。新しいセルを追加すると(モーダルビューコントローラを使用して)、ユーザーに新しく追加されたセルを表示したいと思います。これを行うには、テーブルビューを新しいセルにスクロールして選択し、すぐに選択を解除します。これを行うためのよりよい方法があります場合、私は思ったんだけどテーブルビューをセルにスクロールし、セルをフラッシュします。
- (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];
}
:
今、私は、時限間隔の後に私のテーブルビューにdeselectRowAtIndexPath
を送っています。それは正常に動作しますが、時にはテーブルが非常に長い場合など、時には異なる時間がかかる操作を実行する静的タイマーに頼るのが好きではありません。
編集:selectRowAtIndexPath:animated:scrollPosition
は、UITableView
デリゲートメソッドが実行されないことに注意してください。 tableView:didSelectRowAtIndexPath:
もscrollViewDidEndDecelerating:
も呼び出されません。ドキュメントから:tableView:willSelectRowAtIndexPath:
またはtableView:didSelectRowAtIndexPath:
メッセージを受信するためのデリゲートを起こさない、このメソッドを呼び出すと
、またそれはオブザーバーに
UITableViewSelectionDidChangeNotification
通知を送信します。
感謝を。残念ながら、スクロール・ビューのデリゲートは通知されません。スクロールはユーザーが開始しないためです。チェックするために実装しましたが、手動でテーブルをスクロールするときにのみ呼び出されました。 –
'scrollViewDidScroll:'を実装し、 'contentOffset.y'をチェックして、セルが可視かどうかを調べることができます。 –