作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
是否可以反转 tableView 的顺序。我已经搜索了很多解决方案,但所有结果都不是我想要实现的解决方案。他们都建议使用 scrollToRowAtIndexPath
滚动到表格的最后位置并反向填充数据。但如果表格内容是动态的并且在某些情况下并非所有单元格都有数据,这就不起作用。例如,在普通的 tableView 中,顺序是:
滚动方向
v
V
期望的结果是:
滚动方向
^
^
在这个例子中,如果我使用建议的方法 scrollToRowAtIndexPath
并使用对象数组的长度,我只会得到从顶部数第三个单元格。最后得到这样的东西:
不想要的结果:
滚动方向
v
V
任何帮助都将非常感谢。
最佳答案
填充 UITableView
从底部:
- (void)updateTableContentInset {
NSInteger numRows = [self.tableView numberOfRowsInSection:0];
CGFloat contentInsetTop = self.tableView.bounds.size.height;
for (NSInteger i = 0; i < numRows; i++) {
contentInsetTop -= [self tableView:self.tableView heightForRowAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
if (contentInsetTop <= 0) {
contentInsetTop = 0;
break;
}
}
self.tableView.contentInset = UIEdgeInsetsMake(contentInsetTop, 0, 0, 0);
}
反转元素的顺序:
dataSourceArray = dataSourceArray.reverseObjectEnumerator.allObjects;
Swift 4.2/5 版本:
func updateTableContentInset() {
let numRows = self.tableView.numberOfRows(inSection: 0)
var contentInsetTop = self.tableView.bounds.size.height
for i in 0..<numRows {
let rowRect = self.tableView.rectForRow(at: IndexPath(item: i, section: 0))
contentInsetTop -= rowRect.size.height
if contentInsetTop <= 0 {
contentInsetTop = 0
break
}
}
self.tableView.contentInset = UIEdgeInsets(top: contentInsetTop,left: 0,bottom: 0,right: 0)
}
Swift 3/4.0 版本:
self.tableView.contentInset = UIEdgeInsetsMake(contentInsetTop, 0, 0, 0)
关于ios - 如何从下往上填充 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105905/
我是一名优秀的程序员,十分优秀!