在 iOS 7 上,当使用导航控制器的后退手势时,我的一些应用程序的表格视图在所选单元格上具有淡出和淡入动画效果(从视图的左边缘向右和向左拖动可以看到单元格背景颜色的变化)。
但是有些table view没有这个动画,在拖拽比较快的时候不会取消选中单元格,但是在拖慢view的时候可以取消选中单元格。
在 iOS 7 上,当使用导航控制器的后退手势时,我的一些应用程序的表格视图在所选单元格上具有淡出和淡入动画效果(从视图的左边缘向右和向左拖动可以看到单元格背景颜色的变化)。
但是有些table view没有这个动画,在拖拽比较快的时候不会取消选中单元格,但是在拖慢view的时候可以取消选中单元格。
我一直有同样的问题。您提到的代码似乎可以简化为甚至不检查是否有当前选定的行:
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
但是我注意到,即使将动画设置为 YES 也不会给平移后退手势提供与按下后退按钮相同的动画。
我看到 JosephH 在这个问题中提到:
ios7新的平移手势返回导航堆栈不清除tableview选择
其中一些背面故障可能会得到修复(在 7.04 中),但我仍然看到问题,我正在运行 7.04。希望在 7.1 中?
UITableViewController 的“Clear on Appearance”属性应该在返回 TableView 时清除先前选择的单元格,但是当快速完成平移手势时,显然不会发生这种情况。
其实这行得通!我只是试了一下,它可以在拖动时获得动画。
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSIndexPath *selectedRowIndexPath = [self.tableView indexPathForSelectedRow];
if (selectedRowIndexPath) {
[self.tableView deselectRowAtIndexPath:selectedRowIndexPath animated:YES];
}
}
但是我还是不知道为什么这个问题会出现在一些table view上,对我来说看起来iOS 7之后创建的table view是ok的,而之前创建的旧table view有这个问题。