如何为UITableView的划动删除按钮添加动画效果?

13

我希望像iPhone邮件应用程序一样,当从右向左滑动可编辑表格单元时出现的“删除”按钮能够在被取消(通过点击除UITableViewCell上的“删除”按钮以外的其他地方)时动画消失。但是,我的删除按钮在被取消时立即消失。

为了在第一次滑动表格单元时调用“删除”按钮,我已经在作为所涉及UITableViewUITableViewDataSourceUITableViewDelegate的类中添加了以下内容:

// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //add code here for when you hit delete
    }       
}

我能添加些什么来处理删除按钮在被消除时的动画效果吗?谢谢!

4个回答

25

我遇到了同样的问题,刚刚发现当cell.textLabel.text为空时会出现一些问题。尝试添加以下代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath:
{
    {...} // omitted code
    cell.textLabel.text = @"whatever";          
    cell.textLabel.hidden = YES;
}

这个滑动按钮可以正确地关闭,但为什么呢? PS:已经在自定义单元格和内置中进行了测试。


1
这解决了我在自定义单元格上删除按钮消失动画的问题。 - Redwood
也适用于我!在我的表格单元格中,我仅使用自定义视图,删除的解散动画无法正常工作。但是向默认单元格文本标签添加一个简单字符串就解决了问题。真的很奇怪。谢谢! - KlausCPH
我仍然不知道为什么,但我很高兴它有帮助 :) - Elland
哇,我以为苹果只是在动画方面给我们搞了点小动作。真是个好发现!我没想到会有解决方法。非常感谢!!这应该是被接受的答案 @MCIsAFatalError - RyanG
我不得不使用这个解决方案:https://dev59.com/cmTWa4cB1Zd3GeqPBka2 - JC.

1

你不应该需要手动执行解雇动画,它的工作方式与调用它的方式相同,所以不确定为什么在你的应用程序中表现不同。

你是否使用自定义单元格?作为一个你可以尝试的想法,将shouldIndentWhileEditingRowAtIndexPath:方法更改为返回NO,看看是否有任何变化。我能想到的唯一一件事是,你的内容缩进可能会以某种方式干扰删除按钮区域,导致动画无法执行或者行为不正常。

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { return NO; }


0
**> //MARK:-Tableview delete to left in swift without any tag By using Button Action**  
    let point = sender.convert(CGPoint.zero, to: tableView)
            guard let indexpath = tableView.indexPathForRow(at: point) else {return}
            stringArr.remove(at: indexpath.row)
            tableView.beginUpdates()
            tableView.deleteRows(at: [IndexPath(row: indexpath.row, section: 0)], with: .left)
            tableView.endUpdates()

0

我也遇到了这个问题。我有一系列的tableViews,我注意到其中一些有适当的消失淡出效果,而其他一些则没有。

看起来区别在于UITableViewCellAccessory。如果将其设置为UITableViewCellAccessoryNone以外的任何值,则会得到适当的动画效果。我认为这可能是一个错误。还有其他人可以确认这种行为吗?


可能有点晚了,但我遇到了同样的问题。 - sarunw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接