UITableView添加单元格动画

Ame*_*eya 31 iphone animation cocoa-touch uitableview ios

任何人都可以帮我解决UITableView动画问题吗?

默认情况下,我们有动画删除单元格和重新排序单元格UITableView.

我们可以添加动画添加单元格,如果是这样的话怎么做.

我已经检查了Three20,twitterMyProfile> ReTweets下,没有得到如何完成表扩展动画.

想要在不Three20 frameowrk,使用现有动画的情况下尝试它UITableView.

Run*_*oop 64

您可以使用以下UITableView方法:

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Run Code Online (Sandbox Code Playgroud)

self.dataSource是一个可变数组的例子,你的表只有1个部分:

[self.dataSource addObject:@"New Item"];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[self.dataSource count]-1 inSection:0];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)

注意:由于NSIndexPath的索引为零,因此从数据源计数中减去1.

  • 不要伪造``[self.tableView beginUpdates]`和`[self.tableView endUpdates]` (8认同)
  • 行从0枚举,因此新索引= self.dataSource.count将导致异常,它应该是`NSIndexPath*newIndexPath = [NSIndexPath indexPathForRow:self.dataSource.count -1 inSection:0];`.@Run Loop请编辑你的答案 (3认同)

Sur*_*gch 14

迅速

示例数组,它是表视图的数据源

var myArray = ["Cow", "Camel", "Sheep", "Goat"]
Run Code Online (Sandbox Code Playgroud)

以下将在表视图的顶部添加一行动画.

// add item to current array
myArray.insert("Horse", atIndex: 0)

// insert row in table
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
Run Code Online (Sandbox Code Playgroud)

多次更新

如果你需要做多次插入和/或删除,然后用包围他们beginUpdates()endUpdates().

tableView.beginUpdates()
tableView.insertRowsAtIndexPaths([addIndexPath1, addIndexPath2, ...], withRowAnimation: .Fade)
tableView.deleteRowsAtIndexPaths([deleteIndexPath1, deleteIndexPath2, ...], withRowAnimation: .Fade)
tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)

进一步阅读