1. 程式人生 > >(七十一)關於UITableView退出崩潰的問題和滾動究竟部的方法

(七十一)關於UITableView退出崩潰的問題和滾動究竟部的方法

pan -a -s objc eas position 銷毀 array 過程

【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退出崩潰的問題和滾動究竟部的方法