iOS UITableView滚动到部分的底部

我将在里面做两个部分的tableview。 我可以以编程方式将细胞添加到每个部分,当我添加时,我滚动到使用tableview的结尾

[_tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)]; 

我的问题是如何滚动到第0节的末尾,以便当用户将一个单元格添加到部分0时,tableviewdynamic滚动到0节中的最后一个单元格。

谢谢。

你可以试试这个代码:

 int yourSection = 2; int lastRow = [tableView numberOfRowsInSection:yourSection] - 1; [tableView scrollToRowAtIndexPath:[NSIndexPath lastRow inSection:yourSection] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 

你得到你的部分的行数,然后滚动到该indexPath。

以上所有build议都是正确的,至less基于文档。 但它不工作在我的情况下 – 我不能让滚动显示表视图中的最后一行。 我不得不添加一个延迟滚动,使之工作。

 - (void)scrollToTheBottom:(BOOL)animated { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowCount-1 inSection:0]; [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:animated]; } 

我称之为:

 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self scrollToTheBottom:YES]; }); 

当你在最后插入行时你有它的索引path,你可以使用tableview的scrollToIndexPath方法来滚动

 [self.liveChannelsTable scrollToRowAtIndexPath:IndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

以防万一,这是在Swift中的解决scheme:

 extension UITableView { func scrollToBottom(animated: Bool = true) { let sections = self.numberOfSections let rows = self.numberOfRowsInSection(sections - 1) self.scrollToRowAtIndexPath(NSIndexPath(forRow: rows - 1, inSection: sections - 1), atScrollPosition: .Bottom, animated: true) } } 

在Swift 3中它已经被更新为:

 let indexPath = IndexPath(row: self.numberOfRowsInSection(0) - 1), section: 0) self.commentsTableView.scrollToRow(at: indexPath, at: .bottom, animated: false)