当推动新的视图控制器时,IOS 8 UITableView自调整单元格可视地跳转/移位

Vad*_*off 17 dynamic uitableview ios ios8

这是我设置表格的方式:

self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.estimatedRowHeight = 150;
[self.view addSubview:self.tableView];
Run Code Online (Sandbox Code Playgroud)

在我的单元格中,我调用- (CGSize)sizeThatFits:(CGSize)size以编程方式返回高度(设置为- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath.我没有使用约束或自动布局.

没有什么复杂的,我的高度都是完美的视觉布局.

然而问题是当我按下一个新的视图控制器时,单元格可视(上或下)跳转/移动.它似乎是基于计算估计的行高值而跳跃 - 然而sizeThatFits也是在移位之前为每个可见单元调用所以我真的很困惑(不知道为什么要么完全需要被调用,因为我离开了视图).我已经检查了tableView的contentOffset - 它没有改变,所以这不是问题.

Vad*_*off 6

好吧,我通过在sizeThatFits中缓存我的单元格高度来解决它,并在委托中为估计的单元格高度返回该值.工作得很漂亮.