scrollToRowAtIndexPath を使う
スクロールしたい Cell の section, index を渡してあげる。
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
データを更新したあとにスクロールさせたい
データを更新する場合、UITableView のデータを更新が終わったことを検知するような delegate はなさそう。なので、TableView の reload が終わったあとに実行されるよう dispatch_async を使ったところうまく更新できた。
int row = 5; // exmample
[self.tableview reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableview scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
}