在使用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];
問題解決。