在 iOS 7 上的导航视图控制器上使用后退手势时,表格视图单元格上没有淡出和淡入动画
Posted
技术标签:
【中文标题】在 iOS 7 上的导航视图控制器上使用后退手势时,表格视图单元格上没有淡出和淡入动画【英文标题】:Does not have the fade out and fade in animation on table view cell when use back gesture on navigation view controller on iOS 7 【发布时间】:2013-10-26 16:46:47 【问题描述】:在 ios 7 上,当使用导航控制器的后退手势时,我的一些应用程序的表格视图在所选单元格上具有淡出和淡入动画(从视图的左边缘向右和向左拖动可以看到单元格背景颜色变化)。
但是有些table view没有这个动画,拖得比较快的时候不会取消选中单元格,但是拖得慢的时候可以取消选中单元格。
【问题讨论】:
ios7 new pan gesture to go back in navigation stack does not clear tableview selection的可能重复 【参考方案1】:我也遇到了同样的问题。看来您提到的代码可以简化为甚至不检查是否存在当前选定的行:
- (void) viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
但是我注意到,即使将动画设置为 YES,也不会像按下后退按钮那样使用平移后退手势提供相同的动画。
我看到 JosephH 在这个问题中提到:
ios7 new pan gesture to go back in navigation stack does not clear tableview selection
这些后面的一些故障可能会得到修复(在 7.04 中),但我仍然看到问题并且我正在运行 7.04。希望在 7.1 中?
UITableViewController 的“Clear on Appearance”属性应该在返回 TableView 时清除先前选择的单元格,但是当快速完成平移手势时显然不会发生这种情况。
【讨论】:
【参考方案2】:实际上这行得通!我刚试了下,拖拽的时候可以得到动画。
-(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好像没问题,之前创建的旧table view有这个问题。
【讨论】:
以上是关于在 iOS 7 上的导航视图控制器上使用后退手势时,表格视图单元格上没有淡出和淡入动画的主要内容,如果未能解决你的问题,请参考以下文章