作者:cfpage | 来源:互联网 | 2023-05-25 13:36
是否可以颠倒tableView的顺序.我已经搜索了很多解决方案,但所有结果都不是我想要实现的解决方案.他们都建议滚动到表的最后一个位置scrollToRowAtIndexPath
并反向填充数据.但是,如果表内容是动态的,并且在某些情况下并非所有单元都有数据,则这不起作用.例如,在普通的tableView中,顺序是:
标签1
标签2
标签3
空
空
滚动方向
v
V.
期望的结果是:
滚动方向
^
^
空
空
空
标签3
标签2
标签1
在这个例子中,如果我使用建议的方法scrollToRowAtIndexPath
并使用对象数组的长度,我只会从顶部获得第三个单元格.并最终得到这样的东西:
意外结果:
标签3
标签2
标签1
空
空
滚动方向
v
V.
任何帮助都会非常感谢你.
1> KlimczakM..:
要从底部填充表,请使用以下命令:
- (void)updateTableContentInset {
NSInteger numRows = [self tableView:self.tableView numberOfRowsInSection:0];
CGFloat cOntentInsetTop= self.tableView.bounds.size.height;
for (NSInteger i = 0; i
要反转元素的顺序,请使用:
dataSourceArray = dataSourceArray.reverseObjectEnumerator.allObjects;
Swift 2.2版本(更新):
func updateTableContentInset() {
let numRows = tableView(self.tableView, numberOfRowsInSection: 0)
var cOntentInsetTop= self.tableView.bounds.size.height
for i in 0..
Swift 3.0 +/4.0版本(更新):
self.tableView.cOntentInset= UIEdgeInsetsMake(contentInsetTop, 0, 0, 0)
不幸的是,当您在可以具有动态高度的UITableViewCells上使用AutoLayout时,此解决方案将无法工作.
任何适用于自动布局/动态单元高度的解决方案?
语法和逻辑从3.0开始改变了?我得到:`不能调用非函数类型的值'UITableView!'`*语法改变了*line:`tableView(self.tableView,heightForRowAt:IndexPath(item:i,section:0))`
2> 小智..:
首先反转uitableview
tableView.transform = CGAffineTransformMakeScale (1,-1);
然后在细胞中反转细胞.
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
...
cell.contentView.transform = CGAffineTransformMakeScale (1,-1);
3> 小智..:
Swift 4.0和4.2版本
viewDidLoad中的第一个反向UITableView
override func viewDidLoad() {
super.viewDidLoad()
tableView.transform = CGAffineTransform(scaleX: 1, y: -1)
}
然后反转cellForRowAt中的单元格。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyTableViewCell", for: indexPath) as? MyTableViewCell else { fatalError() }
cell.contentView.transform = CGAffineTransform(scaleX: 1, y: -1)
return cell
}