当我使用[self.navigationController pushViewController:newViewController animated:YES];
详细问题:
现在,我将详细说明我是如何解决问题的,尤其是在iOS 8中。选择任何有大约50个条目的桌面视图,向下滚动以获得第10个条目在tableview顶部输入。然后选择tableview上的任何项目。使用以下方法在tableview中按行选择推送视图控制器。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// Open the New View
NewViewController *newVC = [[NewViewController alloc] init];
[self.navigationController pushViewController:newVC animated:YES];
}
现在你会发现从NewViewController
回到之前的ViewController后,tableview会自动滚动一段距离。 tableview不会停留在滚动位置,它会自动改变其位置。
答案 0 :(得分:1)
我遇到了同样的问题。我正在使用新的iOS 8功能动态单元格高度。我在设置:
self.tableView.estimatedRowHeight = 50.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
问题是某些单元格远高于50.解决方案是提供委托方法estimatedHeightForRowAtIndexPath
并返回更接近实际单元格高度的值。例如:
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 1) {
return 300.0;
}
return 50;
}
另一个解决方案是使用systemLayoutSizeFittingSize
内的cellForRowAtIndexPath
计算单元格高度并缓存该值。内部estimatedHeightForRowAtIndexPath
提供缓存值,但如果尚未缓存单元格高度,则返回默认值。
答案 1 :(得分:0)
只需删除self.tableView.estimatedRowHeight = xxx;
它对我有用。问题发生在iOS8中,不会出现在iOS10中