停止的UITableView 8

问题描述:

我有一个的tableview自动滚动仅在iOS 8的当我打开使用[self.navigationController pushViewController:newViewController animated:YES];停止的UITableView 8

详细的问题的新视图:

现在我将详细介绍如何解决问题,特别是在iOS 8中。使用任何具有大约50个条目的tableview,向下滚动以使第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的实现代码如下autoscrolls一段距离。 tableview不停留在滚动的位置,它总是自动改变其位置。

+0

尝试了一个新项目的步骤,但没有得到同样的问题。你是否在做任何事情将会看到或看到一个新闻? – 2014-09-25 12:08:58

+0

在viewWillAppear我设置桌面背景颜色 – Arshu 2014-09-25 12:31:25

+0

我不能重现该问题。你能分享更多的代码吗? – 2014-09-25 13:04:58

我有同样的问题。我正在使用新的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内部提供缓存值,但如果尚未缓存单元格高度,则返回默认值。

刚删除self.tableView.estimatedRowHeight = xxx;它适合我。这个问题发生在iOS8中,并没有出现在iOS10中