Soupstock

iOSアプリ開発覚書

UITableViewでreloadDataを実行すると選択解除アニメーションがキャンセルされる

下記の操作パターンがよくあると思います。

詳細画面に移動

何かを編集

戻る

reloadData

前の画面に戻ったとき選択したセルがフェードアウトするアニメーションがキャンセルされてしまうので、reloadDataを実行後に選択解除アニメーションを再現させます。

- (void)viewWillAppear:(BOOL)animated
{
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    [self.tableView reloadData];
    [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    [super viewWillAppear:animated];
}

あまり美しくないですね…。他にいい方法があれば誰か教えて頂けるとうれしいです。