1. 程式人生 > >iOS除錯——關於insertRowsAtIndexPaths方法崩潰以及動畫實效的處理辦法

iOS除錯——關於insertRowsAtIndexPaths方法崩潰以及動畫實效的處理辦法

有這樣一個場景,新增了一個數據,然後再插入一個新的資料,會因為numberOfRowInSection多次重新整理後個數與資料來源不一致而崩潰。

插入方法:

[_tableView beginUpdates];

        [_tableViewinsertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];

        [_tableViewendUpdates];


代理方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger

)section

{

    return _dataArray.count;

}


處理辦法:

1.在插入前就保證資料個數一致,比如更新了資料後就呼叫reloadData;

2.插入方法改為新增資料來源,然後reloadData

插入動畫失效處理:

1.使用了reloadData使動畫失效,即使先插入,後reloadData.(插入會更新UI,其實不需要再reloadData)

2.插入方法放在了animation動畫中,需要將插入提出來

另外,測試發現beginUpdates和endUpdates可以不要,雖然是作為動畫的處理,去掉不影響動畫,不過還是按蘋果要求的在做插入刪除時加上吧,另外發現在iOS11中蘋果有新的block方法代替這兩個方法