iOS如何像Messages应用一样将TableView固定在底部

4

这完全超出了我的专业范围,所以我想问一下并看看是否有更有经验的人能给我一个肯定或否定的答案。

因此,我正在使用Appcelerator Titanium构建一个具有许多表视图的应用程序。我想要构建它,以便其中一些tableView从底部开始,并且我可以向上滚动而不是向下滚动开始,就像iPhone上的“消息”应用程序完全相同。

它的工作方式是内容加载进来,它会自动加载表格视图固定在底部,然后您可以向上滚动以查看旧帖子。

我无法找到在appcelerator中实现此目标的方法,除了创建tableview,加载数据,然后将其滚动到底部(这显然具有那种弹性)。我可以隐藏tableview,滚动到底部,然后显示tableview,但是...这并不理想。

现在的问题是...使用标准的iOS SDK(非appcelerator),是否可能将表格设置为固定在底部而不是顶部?如果不行,我必须找到某种解决方法。如果可以,我想尝试将其构建到钛模块中...

无论如何,谢谢!希望对你们中的一些人来说,这是一个简单的答案。

2个回答

9
实际上,这很简单。像这样的东西就可以很好地工作:
-(void)viewDidLoad {
   //place this at the bottom of your viewDidLoad method, or in any method that initially reloads the table
    NSIndexPath* ipath = [NSIndexPath indexPathForRow: myArray.count-1 inSection: 0];
    [tableView scrollToRowAtIndexPath: ipath atScrollPosition: UITableViewScrollPositionBottom animated: NO]
}

这是一个很好的方法。由于UITableView继承自UIScrollView,您还可以查看UIScrollView的-scrollRectToVisible:animated和setContentOffset:animated:方法。 - simonbs
嘿,大家好,谢谢!我真的希望我能更多地了解如何阅读/编写那些代码哈哈,我更喜欢Rails / JavaScript这样的东西。无论如何,这非常有帮助。我将看看Appcelerator是否已经在他们的SDK中提供了类似的内容,但是从我所看到的来看,我并没有看到类似的方法。知道这是可能的真是太好了!只是为了明确,这种方法会使表格在加载时保持固定在底部吗?是否可能(使用此或类似的方法)在附加新的tableViewRows或Sections时也将其保持固定在底部?再次感谢! - Mike Fogg
抱歉,太晚编辑了...我想说的是"prepended"而不是"appended",虽然两者都适用。如果我在底部添加一行,我希望它能滚动到新的底部。如果我将一行添加到顶部,我希望它保持固定在底部。希望这样讲清楚了,并且没有过于复杂! - Mike Fogg
就像我说的那样,每当您重新加载表格并希望它滚动到底部时,请在重新加载后调用此代码。 - CodaFi
1
这就是我存在的意义。你们这些好人让我的声誉保持在荒谬地高水平 :) - CodaFi
这段代码运行良好。但是在滚动表视图时,位置发生了变化,是否有任何限制? - vijay

1

我曾尝试在viewDidLoad中滚动,但在视图控制器出现后,我可以看到表格的开头。

我找到了更好的初始滚动位置。

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    NSInteger lastSectionIndex = MAX(0, [self.chatTableView numberOfSections] - 1);
    NSInteger lastRowIndex = MAX(0, [self.chatTableView numberOfRowsInSection:lastSectionIndex] - 1);
    NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];
   [self.chatTableView scrollToRowAtIndexPath:lastIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}

1
这完全取决于你的表格何时加载数据以及是否使用自动布局。 - keji

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接