2014-02-08 55 views
1

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

每次按下“保存”时,单元格都需要添加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]; 
+0

难道仅仅是不工作的,其中表是空的情况下? –

+0

是的..但它也不工作时,我添加一个新的单元格,它需要从前一个单元格的数据,并将其添加到表格,所以我总是一个细胞落后..我希望这是有道理的 – DBoyer

+0

我认为这是一个索引问题,修改我的答案几次,但尝试当前的代码。 –

回答

2

尝试..

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

这段代码崩溃了吗? –

+0

不,我做了这个改变,并删除了-1 ...这工作!但是即使您只用这3行替换前三行并保留底部的四行代码,动画也不会发生在现在 – DBoyer

+0

? –

0

您插入索引应该是没有-1 numbersOfRows取出[self.tableView reloadData]线,你也应该确保你的numbersOfRows方法在年底返回numbersOfRow + 1的方法。

+0

其崩溃,因为当tableview为空时pathToLastRow为零。它甚至从来没有得到那里..我可以只是简单地如果条件,如果表是空的,我尝试了,它不能正常工作。 – DBoyer

+0

当你计算索引时删除-1。 – bsarr007

+0

谢谢你的工作!但它没有做动画 – DBoyer