首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在视图出现之前滚动到iPhone上UITableView的底部

如何在视图出现之前滚动到iPhone上UITableView的底部
EN

Stack Overflow用户
提问于 2010-05-05 09:58:49
回答 29查看 178.8K关注 0票数 144

我有一个用可变高度的单元格填充的UITableView。当视图被推入视图时,我希望表格滚动到底部。

我目前有以下功能

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[log count]-1 inSection:0];
[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

log是一个可变数组,包含组成每个单元格内容的对象。

上面的代码在viewDidAppear中工作得很好,但是这有一个不幸的副作用:当视图第一次出现时,它会显示表格的顶部,然后跳到底部。我更希望table view可以在它出现之前滚动到底部。

我在viewWillAppearviewDidLoad中尝试了滚动,但在这两种情况下,数据都还没有加载到表中,并且都抛出了异常。

任何指导都将非常感谢,即使这只是一个告诉我我所拥有的一切都是可能的情况。

EN

回答 29

Stack Overflow用户

回答已采纳

发布于 2010-05-05 10:06:37

我相信给你打电话

 tableView.setContentOffset(CGPoint(x: 0, y: CGFloat.greatestFiniteMagnitude), animated: false)

会照你说的做。

票数 151
EN

Stack Overflow用户

发布于 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)
}
票数 126
EN

Stack Overflow用户

发布于 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];
    }
}
票数 121
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2770158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档