ios – 以编程方式触发UITableViewCell“删除”按钮

我想在我的单元格上添加一个自定义按钮,它与刷卡删除功能相同.所以当点击我的自定义按钮时,这个将被隐藏,让出现官方的红色“删除”按钮.

所以我做了这样的事情:

/// Controller.m
///
/// @brief Delete icon button pressed. Trigger display of Delete full button
///
- (IBAction)deleteDrug:(id)sender event:(id)event {
    NSIndexPath *indexPath = [self indexPathForButton:sender event:event];
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    [cell setEditing:YES animated:YES];
}

/// CustomCell.m
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];

    // hide / show "modify" button when entering in edit mode
    switch (editing) {
        case YES:
            self.deleteButton.hidden = YES;
            break;
        case NO:
            self.deleteButton.hidden = NO;
            break;
        default:
            break;
    }
}

此时,我的自定义按钮在点击它们时变得隐藏,但正式的红色“删除”按钮没有出现.

有人知道如何处理吗?

解决方法

我相信删除按钮更多地被tableView处理.因此,而不是设置您的单元格编辑,您可能需要让tableView知道它应该是编辑.
- (IBAction)deleteDrug:(id)sender event:(id)event {
    selectedButtonIndex = [self indexPathForButton:sender event:event];

    [tableView setEditing:YES animated:YES];
}

所以你可能需要做一些设置tableView来编辑的东西.然后在您的tableview的数据源中,您可以实现此方法,其中selectedButton是适当单元格的索引路径.

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath == selectedButtonIndex) {
        return YES;
    }

    return NO;
}

您可能需要为数据源实现此方法.

- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete;
}

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...