在 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 上的导航视图控制器上使用后退手势时,表格视图单元格上没有淡出和淡入动画的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS 7中仅针对一个视图禁用后退手势

使用 iOS 7 滑动导航时导航栏出现故障

视图控制器上的 Xcode / Swift 后退按钮

iOS 7 静态表格视图选择样式错误

在 iOS 13 上推送新视图后后退按钮崩溃

不同导航视图控制器上的后退按钮不同