使用动画动态地将行添加到tableview的末尾

时间:2014-02-08 08:39:35

标签: ios iphone objective-c uitableview

我有一个开始完全为空的tableView,当用户输入数据并按下“保存”按钮时,需要将新单元格添加到tableview中。我通过将新数据添加到我的数据数组并调用[tableView reloadData]来完成此工作,但我想在添加新单元格时使用动画。我假设我需要使用一些tableView编辑方法。

每次按下“save”时,都需要添加WITH动画到表格视图的底部(始终在最后一行之后)。我遇到了问题,因为我的表最初是空的,所以我没有最后一行的indexPath。

这是我的尝试:

NSInteger lastSectionIndex = [self.tableView numberOfSections] - 1;
NSInteger lastRowIndex = [self.tableView numberOfRowsInSection:lastSectionIndex] - 1;
NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];

[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:@[pathToLastRow] withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView reloadData];
[self.tableView endUpdates];

2 个答案:

答案 0 :(得分:2)

尝试..

NSInteger lastSectionIndex = MAX(0, [self.tableView numberOfSections] - 1);
NSInteger lastRowIndex = [self.tableView numberOfRowsInSection:lastSectionIndex];
NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];

答案 1 :(得分:0)

插入索引应为numbersOfRows而不是-1 删除[self.tableView reloadData]行,您还应该确保您的numbersOfRows方法在方法结束时返回numbersOfRow + 1。