仅在用户滚动时从willDisplayCell动画单元格,而不是在reloadData之后

Gad*_*sli 5 animation objective-c uitableview ios

好的,我在willDisplayCell方法中实现了一个自定义动画.当我向上和向下滚动视图时它工作正常.当我点击其中一行时,它将被推送到另一个视图控制器以显示更多详细信息并让用户更新数据.

问题是当用户返回到tableview时.我调用了[tableView reloadData]里面的方法,viewWillAppear以确保显示更新的数据.这将触发我之前设置的动画过渡.

我的问题是:有没有办法只在用户向上/向下滚动桌面时执行动画,而不是在reloadData调用时?

如果有一种方法可以在该线之间混合willDisplayCell使用scrollViewDidScroll,那么它就会很棒.

谢谢!

Bar*_*ski 3

最简单的解决方案是添加一个状态标志来告诉它willDisplayCell是否应该实际动画。

\n\n

将属性添加到您的UITableViewDelegate

\n\n
@property (nonatomic) BOOL shouldPreventDisplayCellAnimation;\n
Run Code Online (Sandbox Code Playgroud)\n\n

在调用之前和之后设置属性reloadData

\n\n
- (void)viewWillAppear:(BOOL)animated\n{\n  \xe2\x80\xa6\n  self.shouldPreventDisplayCellAnimation = YES;\n  [self.tableView reloadData];\n  self.shouldPreventDisplayCellAnimation = NO:\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

修改willDisplayCell为根据条件制作动画

\n\n
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath\n{\n  if (!self.shouldPreventDisplayCellAnimation) {\n    //animate\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n