ios - UITableViewDelegate 在 iOS 中是否有类似 tableViewWillEndDisplayingCell 的方法?

标签 ios objective-c uitableview cell

我想在 iPhone 应用程序的表格 View 中的单元格消失之前使其淡出。当它即将出现时我使用

- (void) tableView: (UITableView *) tableView
   willDisplayCell: (UITableViewCell *) cell
 forRowAtIndexPath: (NSIndexPath *) indexPath

使用 0.3 秒的动画将 alpha 从 0 更改为 1。

我也想在它即将消失时从1到0。有没有与上面类似的方法或者我还能怎么做?

我不想使用标准 iOS UITableViewRowAnimationFade 因为我不想在重新加载表格时进行任何其他转换。

编辑: 我正在重新加载 TableView 的内容。假设我有一个按钮,单击它就会重新加载表中的数据。那是我想要淡出现有单元格并淡入新单元格的时候。

我使用的 Controller 是一个基本的UIViewController,实现UITableViewDataSource UITableViewDelegate UIScrollViewDelegate协议(protocol)。

最佳答案

我找到了解决方案。

就在调用[self.tableView reloadData]之前,我将所有可见单元格设置为淡出动画。我获取所有可见单元格并通过

迭代它们
for (NSIndexPath *indexPath in [self.tableView indexPathsForVisibleRows])
{
    // here I animate cells to fade out
}

(感谢 @AlexKoren 向我展示了迭代可见单元格的方法)。

因为我使用的[self.tableView reloadData]没有任何额外的iOS内置动画,所以单元格就消失了。所以现在它们首先淡出,然后我的新单元格随着定义的动画淡入

- (void) tableView: (UITableView *) tableView
   willDisplayCell: (UITableViewCell *) cell
 forRowAtIndexPath: (NSIndexPath *) indexPath

重要:我在动画完成后重新加载表格 View 。如果我在迭代单元格后调用 [self.tableView reloadData] ,它将在显示动画之前重新加载表格。因为我知道我使用的动画需要多长时间才能完成

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void)
                {
                    [self.tableView reloadData];
                });

之前计算过延迟

关于ios - UITableViewDelegate 在 iOS 中是否有类似 tableViewWillEndDisplayingCell 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32229739/

相关文章:

ios - 导航 Controller 内的选项卡栏实现

iphone - 更新到 4.3.3 后无法读取符号警告

ios - UITableview 根据单元格设置高度

ios - 无法访问 UICollectionViewCell 中的 UITextField

objective-c - 需要关于哪个选项可以有效地在 iPad 上存储数据的建议

ios - 无法创建 iTunes 连接沙盒测试器

objective-c - 使用新 XCode 制作的应用程序无法在 iPod 2g 上运行

ios - 根据标签大小调整 UICollectionViewCell 的大小

ios - 多个自定义单元格

iphone - 如何设置渐变 UITableViewCell 背景?