Col*_*eel 20 objective-c uitableview ios
我有一个_TableView
项目,我想设置自动刷新,我不希望它滚动刷新,让我们说用户滚动2页,并刷新trigered - >所以我想把刷新的内容放到表的顶部没有插入用户的滚动
假设用户在第18行,现在_dataSource
刷新,所以它取出让我们说4个项目,所以我希望用户留在他的项目上.
实现它的最佳方法是什么?
Dav*_*eek 35
对于Swift 3+:
您需要保存当前的偏移量UITableView
,然后重新加载,然后重新设置偏移量UITableView
.
我为此创建了这个函数:
func reload(tableView: UITableView) {
let contentOffset = tableView.contentOffset
tableView.reloadData()
tableView.layoutIfNeeded()
tableView.setContentOffset(contentOffset, animated: false)
}
Run Code Online (Sandbox Code Playgroud)
只需拨打: reload(tableView: self.tableView)
Tru*_*han 24
SWIFT 3
let contentOffset = self.tableView.contentOffset
self.tableView.reloadData()
self.tableView.layoutIfNeeded()
self.tableView.setContentOffset(contentOffset, animated: false)
Run Code Online (Sandbox Code Playgroud)
使用UITableViewAutomatic Dimension时,这是iOS8的错误.我们需要存储表的内容偏移,重载表,强制布局和设置contenOffset.
CGPoint contentOffset = self.tableView.contentOffset;
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
[self.tableView setContentOffset:contentOffset];
Run Code Online (Sandbox Code Playgroud)
Hit*_*esh 11
只需设置estimatedRowHeight
为最大可能值。
self.tableView.estimatedRowHeight = 1000
self.tableView.estimatedSectionFooterHeight = 100.0
self.tableView.estimatedSectionHeaderHeight = 500.0
Run Code Online (Sandbox Code Playgroud)
就是这样!!
请不要FLT_MAX, DBL_MAX
使用价值。可能会使您的应用程序崩溃。
use*_*882 10
我正在显示是否只添加了一行.您可以将其扩展为多行.
// dataArray is your data Source object
[dataArray insertObject:name atIndex:0];
CGPoint contentOffset = self.tableView.contentOffset;
contentOffset.y += [self tableView:self.tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
[self.tableView reloadData];
[self.tableView setContentOffset:contentOffset];
Run Code Online (Sandbox Code Playgroud)
但要实现这一点,您需要定义- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
方法.或者,如果它是常量,您可以直接给出tableview行高.
小智 5
使用扩展
创建UITableViewExtensions.swift
并添加以下内容:
extension UITableView {
func reloadDataWithoutScroll() {
let offset = contentOffset
reloadData()
layoutIfNeeded()
setContentOffset(offset, animated: false)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32418 次 |
最近记录: |