这是 How to get notified when a tableViewController finishes animating the push onto a nav stack. 的后续行动
在 tableView
中,我想取消选择带有动画的行,但只有在 tableView 完成滚动到所选行的动画之后。发生这种情况时如何通知我,或者在完成时调用什么方法。
这是事情的顺序:
- 推送 View Controller
- 在
viewWillAppear
中,我选择了某一行。 - 在
viewDidAppear
IscrollToRowAtIndexPath
中(到选定的行)。 - 然后当它完成滚动时,我想
deselectRowAtIndexPath: animated:YES
这样,用户就会知道他们为什么滚动到那里,然后我可以淡出选择。
第4步是我还没有弄清楚的部分。如果我在 viewDidAppear
中调用它,那么当 tableView 滚动到那里时,该行已经被取消选择,这是不好的。
最佳答案
您可以使用 TableView 委托(delegate)的 scrollViewDidEndScrollingAnimation:
方法。这是因为 UITableView
是 UIScrollView
的子类,而 UITableViewDelegate
符合 UIScrollViewDelegate
。换句话说, TableView 是 ScrollView , TableView 委托(delegate)也是 ScrollView 委托(delegate)。
因此,在您的 TableView 委托(delegate)中创建一个 scrollViewDidEndScrollingAnimation:
方法并取消选择该方法中的单元格。有关 scrollViewDidEndScrollingAnimation:
方法的信息,请参阅 UIScrollViewDelegate
的引用文档。
关于cocoa-touch - 如何在 scrollToRowAtIndexPath 完成动画时得到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356256/