使用UITableViewAutomaticDimension在顶部插入行时保持UITableView偏移

时间:2015-07-14 06:25:35

标签: ios objective-c uitableview autolayout

我的应用中有一个UITableView Autolayout。 按LoadEarlier按钮索引[0]后,我需要在TableView中插入一些行 但我想留在我的TableView的最后一个位置。(像WhatsApp& ...那样加载早期。)

我的问题是在设置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);

如果我从我的代表&amp;中移除AutomaticDimension ....它在静态的细胞高度上完美地工作,但是我需要AutomaticDimension来计算我的细胞的高度。

2 个答案:

答案 0 :(得分:0)

<强>更新

我无法找到保持org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'searchCriteria' on field 'dateCreation': rejected value [2015-09-16]; codes [typeMismatch.searchCriteria.dateCreation,typeMismatch.dateCreation,typeMismatch.java.sql.Timestamp,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [searchCriteria.dateCreation,dateCreation]; arguments []; default message [dateCreation]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Timestamp' for property 'dateCreation'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [java.sql.Timestamp] for property 'dateCreation': PropertyEditor [org.springframework.beans.propertyeditors.CustomDateEditor] returned inappropriate value of type [java.util.Date]] 偏移UITableView的解决方案。

我已从UITableViewAutomaticDimension&amp;移除了UITableViewAutomaticDimension heightForRowAtIndexPath并保留estimateForRowAtIndexPath

UITableView

答案 1 :(得分:0)

简单有效的技巧:

var upsideDown: Bool = true

// swap table view vertically
tableView.transform = upsideDown
  ? CGAffineTransform(scaleX: 1, y: -1)
  : .identity

// swap cell in cellForRowAt method
cell.transform = upsideDown
  ? CGAffineTransform(scaleX: 1, y: -1)
  : .identity

像往常一样插入行,这些行将出现在tableview的顶部。

这与UITableView.automaticDimension一起正常工作,滚动保持平稳。

尽管第一行仍将保留在tableview的底部,但是您可以通过额外的编码对其进行修复。