UITableViewAutomaticDimension

UITableViewAutomaticDimension

我的应用程序中有一个UITableViewAutolayout
按下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偏移量的解决方案。
我已经从UITableViewAutomaticDimensionheightForRowAtIndexPath中删除了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];

08-04 00:57