cocoa-touch - 如何在 scrollToRowAtIndexPath 完成动画时得到通知

标签 cocoa-touch ios

这是 How to get notified when a tableViewController finishes animating the push onto a nav stack. 的后续行动

tableView 中,我想取消选择带有动画的行,但只有在 tableView 完成滚动到所选行的动画之后。发生这种情况时如何通知我,或者在完成时调用什么方法。

这是事情的顺序:

  1. 推送 View Controller
  2. viewWillAppear 中,我选择了某一行。
  3. viewDidAppear I scrollToRowAtIndexPath 中(到选定的行)。
  4. 然后当它完成滚动时,我想 deselectRowAtIndexPath: animated:YES

这样,用户就会知道他们为什么滚动到那里,然后我可以淡出选择。
第4步是我还没有弄清楚的部分。如果我在 viewDidAppear 中调用它,那么当 tableView 滚动到那里时,该行已经被取消选择,这是不好的。

最佳答案

您可以使用 TableView 委托(delegate)的 scrollViewDidEndScrollingAnimation: 方法。这是因为 UITableViewUIScrollView 的子类,而 UITableViewDelegate 符合 UIScrollViewDelegate。换句话说, TableView 是 ScrollView , TableView 委托(delegate)也是 ScrollView 委托(delegate)。

因此,在您的 TableView 委托(delegate)中创建一个 scrollViewDidEndScrollingAnimation: 方法并取消选择该方法中的单元格。有关 scrollViewDidEndScrollingAnimation: 方法的信息,请参阅 UIScrollViewDelegate 的引用文档。

关于cocoa-touch - 如何在 scrollToRowAtIndexPath 完成动画时得到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356256/

相关文章:

objective-c - iPad 输入密码 View

ios - UITableViewCell setHighlighted, setSelected "animateAlongsideTransition"或类似的

ios - 向 AppDelegate 添加类别以实现 UIAplicationDelegate 协议(protocol)中的方法

iphone - 使用 AVPlayer 流式传输 mp3 音频

ios - SpriteKit 动画未可靠执行

ios - NSUserDefaults-插入数组作为对象不起作用

javascript - 无法使 HTML5 音频标签在移动浏览器上工作

objective-c - 在 iPhone/iPad 应用程序中创建动画应该应用哪些技术?

iphone - Objective C HTML 转义/反转义

objective-c - 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?