2016-12-15 95 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]; 
}