我想向后加载我的tableview,这意味着tableView从底部加载并向上滚动以查看更多内容。
首先,我尝试反转dataSource数组。内容相反,但仍然从顶部加载,用户必须向下滚动才能看到更多内容。
然后我尝试从viewWillAppear:
的底部加载tableViewoverride func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if (self.conversationTableView.contentSize.height > self.conversationTableView.frame.size.height) {
let offset = CGPoint(x: CGFloat(0), y: CGFloat(self.conversationTableView.contentSize.height - self.conversationTableView.frame.size.height))
self.conversationTableView.setContentOffset(offset, animated: true)
}
}
然而,这种尝试不起作用,因为我异步下载图像(我使用的是NSTextAttachment,它填充了每个单元格中的UITextView)。每次我的占位符替换为真实下载的图像时,都会导致tableView内容偏移发生偏移(占位符的图像高度几乎总是小于下载图像的高度)。因此,以这种方式设置contentOffset不起作用。
如何从底部加载tableView并向上滚动以查看更多内容?
答案 0 :(得分:39)
最好的方法是翻转tableView和它的单元格。这样,如果一个单元格要改变大小(由于异步下载之类的东西),你仍然会从tableview的底部加载而不是偏移。
//In ViewDidLoad
conversationTableView.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi));
//In cellForRowAtIndexPath
cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi));
另外:如果您有headerView,只需将其设置为tableView.tableFooterView
:
var tableHeaderView = UIView(frame: headerFrame)
tableHeaderView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi));
conversationTableView.tableFooterView = tableHeaderView
如果你有一个footerView和headerView,只需将标题设置为页脚,将页脚设置为标题。
编辑: 如果要翻转滚动指示器:
conversationTableView.scrollIndicatorInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, conversationTableView.bounds.size.width - 8.0)
答案 1 :(得分:1)
在@Validateable
class MyCommand {
String cancel_url
String redirect_url
String success_url
static constraints = {
cancel_url nullable: false, validator: { url, obj ->
//some specific validation
//some common url validation
}
redirect_url nullable: false, validator: { url, obj ->
//some specific validation
//some common url validation
}
success_url nullable: false, validator: { url, obj ->
//some specific validation
//some common url validation
}
}
}
方法中,执行以下操作:
viewWillAppear
其中tableView.scrollToRowAtIndexPath(bottomIndexPath, atScrollPosition: .Bottom,
animated: true)
是表视图中最后一行的indexPath。如果您的数组长度为bottomIndexPath
且表格中只有一个部分,则通常为n
,但请务必检查您的具体IndexPath(item: n-1, section: 0)
。
这将确保您从tableView的底部开始。完成后,您需要做的就是确保UITableView
上的cellForRowAtIndexPath
方法反向返回数据,然后您就能获得所需效果。