开发者

Programmaticlaly moving rows with animation in UITableView

开发者 https://www.devze.com 2022-12-20 18:39 出处:网络
I want to move a row to the bottom of my UITableView with cool animation effect just like in this Grocery Shopping List app.

I want to move a row to the bottom of my UITableView with cool animation effect just like in this Grocery Shopping List app.

Just like we can move rows with reordering control like:

Programmaticlaly moving rows with animation in UITableView

Ho开发者_如何学编程w can I create such animation?


In IOS 5 this can be done with the following UITableView selector:

- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath

For example:

[self.tableView moveRowAtIndexPath:indexPath toIndexPath:[NSIndexPath indexPathForRow:[items count] - 1 inSection:1]];


Important: This answer assumes iPhone OS 3.x. See the answer above for iOS 5.x

I don't know what is the "cool animation effect just like in Grocery Shopping List app". Not everyone has that app.


Rows cannot be moved programmatically.

However, you can simultaneously insert and delete a row to simulate a move.

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:rowToMove]
                 withRowAnimation:UITableViewRowAnimationLeft];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPathToMoveTo]
                 withRowAnimation:UITableViewRowAnimationLeft];
// update your dataSource as well.
[tableView endUpdates];


This is kind of similar to what I have done to allow drag and drop from one scrollview to another.

You will want to create a duplicate/dummy cell (for visual effect), then remove the original cell, then animate the duplicate, then insert into the bottom and then finally remove the duplicate/dummy cell.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号