8

UITableviewのアニメーションの完了時にアクションを実行するにはどうすればよいですか?

UITableviewセルを縮小して、縮小後に表示されないセルのサブビューを削除しようとしています。セルを縮小するには、[tableviewbeginUpdates]と[tableviewendUpdates]を呼び出し、UITableviewのheightForRowAtIndexPathデータソースメソッドによって返されるセルの高さを変更します。

課題は、サブビューを削除する前にサブビューが見えないように、テーブルビューを完全に縮小する必要があることです。[tableview endUpdates]を呼び出す直後(またはその前または間)にセルからサブビューを削除するコードを配置すると、サブビューの削除が早すぎて(アニメーションを待機しません)、面白く見えます。

私の考えでは、アニメーションの完了時に実行されるコールバックをセットアップし、コールバックのサブビューを削除できるようにしたいと考えています。

4

2 に答える 2

19

これはどうですか?

[CATransaction begin];

[CATransaction setCompletionBlock:^{
    // animation has finished
}];

[tableView beginUpdates];
// shrink the cells
[tableView endUpdates];

[CATransaction commit];
于 2013-01-31T18:23:30.463 に答える
-4

NSNotificationsクラスを使用してみてください。何かが起きようとしているとき、および後で何かが起こった後に通知を投稿します。同じ通知方法でboolを使用して、「もうすぐ発生する」と「発生した」を切り替えることができます。

于 2011-06-08T07:41:06.153 に答える