2014-02-08 94 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