我目前正在将一个应用程序更新到 iOS8,并且正在替换我自己的单元格高度计算。我有一个带有一堆自定义单元格的表格 View 。每个单元格在被选中时都会将一个新 View 呈现/推送到导航 Controller 上。当表格 View 填充了这些单元格,并且用户选择了表格底部附近的一个单元格时,表格 View 会在新 View 出现之前跳到右上角。这非常分散用户的注意力。我在这里尝试使用 iOS 8 中引入的自调整单元格(在 viewDidLoad 中):
self.tableView.estimatedRowHeight = 60.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
这是选择单元格时的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *selectedViewController = [[UIStoryboard storyboardWithName:@"Trip" bundle:nil] instantiateViewControllerWithIdentifier:@"TripDetail"];
DetailViewController *destViewController = (id)selectedViewController;
[destViewController setData:self.dataStore];
[self.navigationController pushViewController:selectedViewController animated:YES];
}
有人知道为什么会这样吗?我怎样才能让它停下来?
最佳答案
这是一个已知问题。 tableView 正在调用它的委托(delegate)来获取行的估计高度,这会导致表格滚动。
您可以等着看它是否会在下一次更新中修复,或者实现 tableView:estimatedHeightForRowAtIndexPath:
(作为目前的解决方法)并返回缓存的高度。由于估计值将是实际高度,因此表格不会跳动。
关于iOS 8 自动单元格高度 - didSelectRowAtIndexPath 导致 UItableview 跳到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598453/