当我的View(包含表格视图)加载时,我希望它滚动到表格视图的底部。这非常有效。但是,当我的一个按钮(sendReply)被点击时,我也希望tableView滚动到底部。出于某种原因,滚动到tableView的底部可以在最初加载View时工作,但是当我将其置于sendReply操作中时,[self bottomScroll:self]似乎不会触发?
的.m
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self bottomScroll:self];
}
- (void)bottomScroll:(id)sender {
if (self.messages.count > 0)
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.messages.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
- (IBAction)sendReply:(id)sender {
[self bottomScroll:self];
}
答案 0 :(得分:0)
这应该有效。点击按钮时,您确定messages.count
大于0吗?您可以在该行设置断点,并查看是否执行了此代码。
您也可以尝试-scrollRectToVisible
作为替代方案。
答案 1 :(得分:0)
如phi所述,scrollRectToVisible将是我的方式。调用tableView的滚动视图,传递到要显示的按钮的矩形。自从我使用obj-c以来已经有一段时间了,但是:
-(IBAction)sendReply: (id)sender {
[scrollView scrollRectToVisible: sendReply.frame, animated: YES]
}
?语法可能是错误的,但它应该足够接近,以便让你到达目的地。
在swift:
@IBAction func sendReply(sender: UIButton/AnyObject) -> Void {
let scrollView = tableView.scrollView
scrollView.scrollrectToVisible(_ rect: sender.frame, animated: true)
}
答案 2 :(得分:0)
根据您的描述,这似乎很奇怪。需要更多代码才能找到最新消息。可以推断出你想要将最后一个单元格滚动到底部。因此,请确保tableview的内容大于垂直框架。
答案 3 :(得分:0)
试试这个
if (self.tableView.contentSize.height > self.tableView.frame.size.height){
CGPoint point = CGPointMake(0, self.tableView.contentSize.height - self.tableView.frame.size.height);
[self.tableView setContentOffset:point];
}