有什么方法可以从 UITableViewCell 更改 "DELETE" 按钮吗?

Is there any way to change "DELETE" button from UITableViewCell?

我想更改 UITableViewCell 中的删除按钮。 实际上,我需要:

  1. 改变按钮的位置
  2. 字体
  3. 该按钮的文本颜色。

这里我只能在下面的委托方法中更改按钮文本:

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    UITableViewRowAction *viewAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Follow" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {  

        NSLog(@"View Action fired");  
    }];  
    viewAction.backgroundColor = [UIColor clearColor];  

    return @[callAction];  
}  

但是如何改变按钮的其他属性。如果有人知道,请告诉我。

谢谢。

要实现此功能,请在 UITableView 的委托上实现以下两种方法以获得所需的效果

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

 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// you need to implement this method too esle nothing will work:

}

检查您创建的方法,您创建了 UITableViewRowAction *viewAction 的名称,但您返回了 callAction 的值修改一次并尝试

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    UITableViewRowAction *callAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Follow" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {  

        NSLog(@"View Action fired");  
    }];  
    callAction.backgroundColor = [UIColor clearColor];  

    return @[callAction];  
}  

在标准中 UITableViewRowAction 我们不能改变,我们只能改变

风格

标题

背景颜色

背景效果

有关详细信息,请参阅 Apple Documents

您可以创建自定义单元格并将自定义 UIButton 添加到单元格中。我有一个例子

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    ViewOrderCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath] ;

    if (cell == nil)
    {
        cell = [[ViewOrderCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    [cell.btnUpdate addTarget:self action:@selector(updateOrder:) forControlEvents:UIControlEventTouchUpInside];
    [cell.btnDelete addTarget:self action:@selector(deleteOrder:) forControlEvents:UIControlEventTouchUpInside];

    return cell;
}

-(void)updateOrder:(id)sender
{
    NSLog(@"update");
}
-(void)deleteOrder:(id)sender
{
    NSLog(@"delete");
}

希望对您有所帮助。