2013-10-21 82 views
0

我遇到了這個問題,我已經遍及互聯網搜索,仍然無法找到解決方案。請看下面的代碼:UITableView異常當滾動和添加單元格

NSLog(@"%i", [self tableView:tableView numberOfRowsInSection:0]); // 4 
[self updateCardIDArray]; 
NSLog(@"%i", [self tableView:tableView numberOfRowsInSection:0]); // 5 

int indexOfCreatedCard = [cardIDs indexOfObject:newCardID];   
NSLog(@"%i", indexOfCreatedCard);         // 4 
[tableView reloadData]; 
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:indexOfCreatedCard inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:FALSE]; 

NSArray *insertIndexPaths = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:indexOfCreatedCard inSection:0], nil]; 
[tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight]; 

基本上,我想在這裏實現的是滾動表剛剛創建的單元格,然後顯示它正在添加動畫當我使用此代碼,我。有這樣的錯誤:

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:1070 

與此異常:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. 

的事情是,如果我刪除滾動和重裝數據線,該計劃將正常工作(不能夠看到附加細胞動畫,當然)。任何幫助將不勝感激!

回答

0

嘗試

[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:indexOfCreatedCard inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO]; 
0

我認爲問題是,u的滾動單元插入之前,我只是張貼適合烏爾問題


- (IBAction)scrollPlease:(id)sender 
    { 
     aTableView.contentInset = UIEdgeInsetsMake(0, 0, 10, 0); //to move some position below 
     k = k + 1; //hear k is the row numbers in ur case "indexOfCreatedCard" 
     [aTableView beginUpdates]; // first u add the cell to tableview 
     [aTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:k-1 inSection:0]] withRowAnimation:UITableViewRowAnimationMiddle]; 
     [aTableView endUpdates]; //hear (k - 1) is the last row 
     [aTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:k-1 inSection:0] atScrollPosition:UITableViewRowAnimationTop animated:NO]; //then scroll to last cell it will show the animation of adding the cell 
     aTableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0); // after u set it to zero 

    } 

希望你的代碼示例得到一些想法:)


+0

我在滾動之前調用了[tableView reloadData],應該在tableView滾動之前添加單元格。我試圖插入,然後滾動,應用程序不會崩潰。雖然,插入動畫無法看到,這不是我想要實現的。 – user945711

+0

使用[aTableView beginUpdates];和[aTableView endUpdates];爲動畫插入並設置aTableView.contentInset = UIEdgeInsetsMake(0,0,10,0);調整「contentInset」底部空間中的值以查看動畫看到我更新的代碼,您可能需要更改「contentInset」值 –

+0

我添加了更改內容的插入代碼,現在它只在新單元格之前滾動到右側,這些內容插入代碼,它直接滾動到添加的單元格,但沒有動畫。問題是,如果新單元格在屏幕上(內容大小小於高度),則會顯示動畫。 – user945711

相關問題