(七十一)關於UITableView退出崩潰的問題和滾動究竟部的方法
阿新 • • 發佈:2017-06-13
pan -a -s objc eas position 銷毀 array 過程
【TableView滾動究竟部】
【TableView退出崩潰的問題】
近期在使用TableView時偶然發如今TableView中數據較多時,假設在滾動過程中退出TableView到上一界面。會引起程序的崩潰。經過網上查閱和思考我發現這樣的情況出如今一個UIView控制器擁有一個TableView,TableView無法在UIView銷毀前全然銷毀,從而繼續調用dataSource,而這時候UIView已經不可用了,會引發野指針錯誤。
避免方法非常easy,僅僅須要在UIView的dealloc方法中把dataSource設為nil就可以:
- (void)dealloc{ self.tableView.dataSource = nil; }
【TableView滾動究竟部】
對於即時聊天等應用,經常須要在新數據到來時把TableView滾動究竟部。這個需求能夠通過TableView的scrollToRowAtIndexPath::實現,須要傳入要滾動到的cell位置和滾動位置。
須要傳入indexPath的最後一個位置,也就是要顯示的數據數組的最後一個元素的索引,位置為底部。枚舉名為
UITableViewScrollPositionBottom。例如以下:
Tip:一定要註意在沒有數據時會造成indexPath.row=-1,此時應當直接返回。
- (void)scrollToTableBottom{ if (_array.count < 1) { return; } NSInteger lastRow = _array.count - 1; NSIndexPath *lastPath = [NSIndexPath indexPathForRow:lastRow inSection:0]; [self.tableView scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; }
(七十一)關於UITableView退出崩潰的問題和滾動究竟部的方法