我的应用程序中有一个UITableView
和Autolayout
。
按下LoadEarlier
按钮索引[0]后,我需要在TableView中插入一些行,
但是我想保留在TableView的最后一个位置上。
我的问题是在设置contentOffset
后,TableVoew的位置不正确。
我检查了此链接,但这不是我的问题,但我认为答案可以帮助我们。
UITableViewAutomaticDimension - Cells move when table is reloaded
和这个链接:
Keep uitableview static when inserting rows at the top
我喜欢这样:
// in ViewDidLoad
self.myTableView.estimatedRowHeight = 100;
self.myTableView.rowHeight = UITableViewAutomaticDimension;
//implemention of LoadEalier Method
CGFloat oldTableViewHeight = self.myTableView.contentSize.height;
for (int i = temp ; i < temp +26; i++) {
myObject * tempObject = [[myObject alloc]init];
tempObject.name = [NSString stringWithFormat:@"Obj : %d",i];
tempObject.uID = [[NSUUID UUID]UUIDString];
[_dataArray insertObject:tempObject atIndex:0];
}
[self.myTableView reloadData];
CGFloat newTableViewHeight = self.myTableView.contentSize.height;
self.myTableView.contentOffset = CGPointMake(0, self.myTableView.contentSize.height - oldTableViewHeight);
如果我从代理人&....中删除AutomaticDimension,它在静态单元格的高度上可以完美地工作,但是我需要AutomaticDimension来计算单元格的高度。
最佳答案
更新
我找不到用UITableView
保持UITableViewAutomaticDimension
偏移量的解决方案。
我已经从UITableViewAutomaticDimension
和heightForRowAtIndexPath
中删除了estimateForRowAtIndexPath
并保留了UITableView
:
CGFloat oldTableViewHeight = self.tableView.contentSize.height; // we keep current content offSet for revert to this position after Reload Table
// Update your Data
[self.tableView reloadData];
CGFloat finalYPostioton = self.tableView.contentSize.height - oldTableViewHeight - numberOfYourSection * sectionHeight;
finalYPostioton = finalYPostioton - spaceFromTopCell; // we need this for showing a little of top cell from our index. spaceFromTopCell -->10
[self.tableView setContentOffset:CGPointMake(0,finalYPostioton) animated:NO];