2016-12-15 136 views
0

我正在構建一個聊天應用程序,在該應用程序中,我必須將tableview滾動到底部以顯示最近的消息。ios - UITableView加載時凍結

我在做什麼的,我就用下面的代碼滾動可見矩形:

- (void)tableViewScrollToBottomAnimated:(BOOL)animated { 
    // return; 

if (!_tableViewShouldScroll) { 
    return; 
} 

NSInteger numberOfSections = [self.tableView numberOfSections]; 

if (numberOfSections > 0) { 
    NSInteger numberOfRows = [self.tableView numberOfRowsInSection:numberOfSections - 1]; 

    if (numberOfRows > 0) { 
     CGRect footer = [self.tableView rectForFooterInSection:numberOfSections - 1]; 

     [self.tableView scrollRectToVisible:footer animated:animated]; 
    } 
} 

_tableViewShouldScroll = !_tableViewShouldScroll; 
} 

它向下滾動得很好,但凍結了第二經歷的最後一個單元格,而當視圖加載首次。在連續調用時,此方法工作正常。

PS。我在viewdidappear中調用滾動方法。

任何幫助在這裏將不勝感激。

+0

我認爲有問題的cellForRow方法導致此問題 –

回答

0

我打電話tableViewScrollToBottomAnimateviewDidAppear,這導致凍結幾分之一秒。我在viewWillLayoutSubviews之內調用了該方法,它的功能就像一個魅力。

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 
    [self tableViewScrollToBottomAnimated:NO]; 
}