web-dev-qa-db-ja.com

アニメーションでUITableViewCellを追加/削除しますか?

これは馬鹿げた質問のように聞こえるかもしれませんが、どこでも見ました。これどうやってするの?

私はswype-to-deleteメソッドでこれを行う方法を知っていますが、その機能の外でそれを行う方法はありますか?

いくつかのコードサンプルを投稿してください。

ありがとう!
コールトン

55
iosfreak
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];

insertIndexPathsは、テーブルに挿入されるNSIndexPathの配列です。

deleteIndexPathsは、テーブルから削除されるNSIndexPathの配列です。

インデックスパスの配列形式の例:

NSArray *insertIndexPaths = [[NSArray alloc] initWithObjects:
        [NSIndexPath indexPathForRow:0 inSection:0],
        [NSIndexPath indexPathForRow:1 inSection:0],
        [NSIndexPath indexPathForRow:2 inSection:0],
        nil];
118
Sabobin

In Swift 2.1+

tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([YourIndexPathYouWantToDeleteFrom], withRowAnimation: .Fade)
tableView.insertRowsAtIndexPaths([YourIndexPathYouWantToInsertTo], withRowAnimation: .Fade)
tableView.endUpdates()

NSIndexPathは次のように簡単に作成できます。

NSIndexPath(forRow: 0, inSection: 0)
7
ColossalChris

次の2つのメソッドが必要です:insertRowsAtIndexPaths:withRowAnimation:およびdeleteSections:withRowAnimation:これらは両方とも ITableViewドキュメント で詳しく説明されています。

4
indragie

Swift 4.0

    tableView.beginUpdates()
    tableView.deleteRows(at: [YourIndexPathYouWantToDeleteFrom], with: .fade)
    tableView.insertRows(at: [YourIndexPathYouWantToInsertTo], with: .fade)
    tableView.endUpdates()

IndexPathを作成するには、これを使用します。

IndexPath(row: 0, section: 0)
1
Andrew Vergunov