UITableView 使用 insertRowsAtIndexPaths 函數時報錯!

在使用UITableView的函數insertRowsAtIndexPaths出現了問題,

想在首行插入一條數據,

剛開始是這樣使用的:

NSArray *indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathWithIndex:0]];

[m_pTableView beginUpdates];

[m_pTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

[m_pTableView endUpdates];

結果出現了crash,報告如下:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid index path for use with UITableView.  Index paths passed to table view must contain exactly two indices specifying the section and row.  Please use the category on NSIndexPath in UITableView.h if possible.'

根據上面的錯誤信息,要有section and row兩個信息,去UITableView.h裏面查了下,果然發現NSIndexPath專門有個初始化函數,是專門供UITableView使用的,就是:

+ (instancetype)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;

所以把上面的代碼改裝了下:

NSArray *indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]];

[m_pTableView beginUpdates];

[m_pTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

[m_pTableView endUpdates];

問題解決。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章