行删除动画完成后的UITableView回调

fez*_*fox 6 animation uitableview delete-row

我有一个桌子,顶部和底部单元格下方有阴影(在这里使用Matt Gallagher的解决方案:http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html).这些是在UITableView类扩展的layoutSubviews方法中添加的.

我动态地添加和删除每个主单元格下面的单元格(这些提供了额外的数据) - 让我们称之为"细节"单元格.一次只有一个开放.当删除最后一个主单元格下方的"细节单元格"时,随着动画开始,阴影向上轻拂到最后一个单元格(在细节单元格上方).这样做是因为layoutSubview方法认为表的最后一个单元格在deleteRowsAtIndexPaths的动画开始时(而不是在动画结束时)发生了变化.

因此,从本质上讲,我需要一种方法将阴影保留在细节单元格下方,因为它被删除.不确定最好的方法.如果UITableView不再认为该单元格是最后一个单元格,那么我甚至不确定如何获取单元格(因为UITableView因此得到了单元格):

NSIndexPath *lastRow = [indexPathsForVisibleRows lastObject];
if ([lastRow section] == [self numberOfSections] - 1 &&
    [lastRow row] == [self numberOfRowsInSection:[lastRow section]] - 1)
 {
        //adds shadow below it here
     }
Run Code Online (Sandbox Code Playgroud)

因此,如果UITableView仍然认为"细节"单元格上方的主单元格是"lastObject",那么即使捕获动画的开头也没什么用处.

谢谢你的任何想法.

Pet*_*isu 5

尝试这个

[CATransaction begin];

[tableView beginUpdates];

//...

[CATransaction setCompletionBlock: ^{
    // Code to be executed upon completion
}];

[tableView deleteRowsAtIndexPaths: indexPaths
                 withRowAnimation: UITableViewRowAnimationAutomatic];


[tableView endUpdates];

[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)


Pra*_*upa 0

我确信您可以通过使用自定义表视图类轻松实现此目的,而不是使用外部框架的依赖项,只需从 uitable 视图继承并向其添加子视图即可。

但如果你坚持保持这种状态。在删除之前在您自己的变量中引用它。