gpt4 book ai didi

ios - 如何从下往上填充 UITableView?

转载 作者:IT王子 更新时间:2023-10-29 07:49:49 27 4
gpt4 key购买 nike

是否可以反转 tableView 的顺序。我已经搜索了很多解决方案,但所有结果都不是我想要实现的解决方案。他们都建议使用 scrollToRowAtIndexPath 滚动到表格的最后位置并反向填充数据。但如果表格内容是动态的并且在某些情况下并非所有单元格都有数据,这就不起作用。例如,在普通的 tableView 中,顺序是:


标签1

标签2

标签3

滚动方向
v
V


期望的结果是:
滚动方向
^
^

标签3

标签2

标签1


在这个例子中,如果我使用建议的方法 scrollToRowAtIndexPath 并使用对象数组的长度,我只会得到从顶部数第三个单元格。最后得到这样的东西:


不想要的结果:

标签3

标签2

标签1

滚动方向
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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com