3

非常にイライラする問題があります。UITableView を備えたアプリがあります。テーブル ビューからセルを削除すると、データ モデルから削除され、次のように呼び出します。

-(void)removeItem:(NSIndexPath *)indexPath {
    [self.tableView beginUpdates];

    [self.tableView deleteRowsAtIndexPaths:@[indexPath]
                      withRowAnimation:UITableViewRowAnimationRight];
    [self.tableView endUpdates];
}

私の問題は、上記のように試してみましたが、animateWithDuration を使用せずに試したことです。CATransaction を試してみましたが、どうやってもアニメーションは起こりません。

シミュレーターでアニメーションが遅くなりました。リストから項目を削除すると、正しく削除されますが、アニメーションは表示されません。テーブルビューデータが再ロードされる前に、消えて空白のスペースがしばらく残ります。

SOとGoogle全体を検索しましたが、答えが見つからないようです。何か案は?

上記の関数を呼び出す前に、データモデルからオブジェクトを削除しているという事実と関係があるのでしょうか?

編集:正しくないため、アニメーションブロックを削除しました

4

4 に答える 4

1
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];

indexPaths は、テーブルに挿入または削除される NSIndexPaths の配列です。

 NSarray *indexPaths = [[NSArray alloc] initWithObjects:
    [NSIndexPath indexPathForRow:0 inSection:0],
    [NSIndexPath indexPathForRow:1 inSection:0],
    [NSIndexPath indexPathForRow:2 inSection:0],
    nil];
于 2016-02-02T10:36:30.443 に答える