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

时间:2014-01-26 14:33:29

标签: ios objective-c animation uitableview

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

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

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

如果有一种方法可以在willDisplayCellscrollViewDidScroll之间混合或沿着那条线进行混合,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:3)

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

UITableViewDelegate添加媒体资源:

@property (nonatomic) BOOL shouldPreventDisplayCellAnimation;

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

- (void)viewWillAppear:(BOOL)animated
{
  …
  self.shouldPreventDisplayCellAnimation = YES;
  [self.tableView reloadData];
  self.shouldPreventDisplayCellAnimation = NO:
}

修改willDisplayCell以根据条件

设置动画
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
  if (!self.shouldPreventDisplayCellAnimation) {
    //animate
  }
}