我有一个用可变高度的单元格填充的UITableView
。当视图被推入视图时,我希望表格滚动到底部。
我目前有以下功能
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[log count]-1 inSection:0];
[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
log是一个可变数组,包含组成每个单元格内容的对象。
上面的代码在viewDidAppear
中工作得很好,但是这有一个不幸的副作用:当视图第一次出现时,它会显示表格的顶部,然后跳到底部。我更希望table view
可以在它出现之前滚动到底部。
我在viewWillAppear
和viewDidLoad
中尝试了滚动,但在这两种情况下,数据都还没有加载到表中,并且都抛出了异常。
任何指导都将非常感谢,即使这只是一个告诉我我所拥有的一切都是可能的情况。
发布于 2010-05-05 10:06:37
我相信给你打电话
tableView.setContentOffset(CGPoint(x: 0, y: CGFloat.greatestFiniteMagnitude), animated: false)
会照你说的做。
发布于 2013-04-16 07:22:55
我认为最简单的方法是:
if (self.messages.count > 0)
{
[self.tableView
scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.messages.count-1
inSection:0]
atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
Swift 3版本:
if messages.count > 0 {
userDefinedOptionsTableView.scrollToRow(at: IndexPath(item:messages.count-1, section: 0), at: .bottom, animated: true)
}
发布于 2011-09-21 16:31:19
来自Jacob's answer的代码如下:
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (self.messagesTableView.contentSize.height > self.messagesTableView.frame.size.height)
{
CGPoint offset = CGPointMake(0, self.messagesTableView.contentSize.height - self.messagesTableView.frame.size.height);
[self.messagesTableView setContentOffset:offset animated:YES];
}
}
https://stackoverflow.com/questions/2770158
复制相似问题