有没有办法改变" DELETE" UITableViewCell的按钮?

时间:2016-08-29 10:33:24

标签: ios uitableview uitableviewrowaction

我想在UITableViewCell中更改DELETE按钮。 实际上,我需要:

  1. 更改按钮的位置
  2. font
  3. 该按钮的文字颜色。
  4. 这里我只能更改以下委托方法中的按钮文字:

    - (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];  
    }  
    

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

    感谢。

2 个答案:

答案 0 :(得分:0)

要使其正常工作,请在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中,我们无法更改,我们只能更改

<强>式

<强>标题

<强>的backgroundColor

<强> backgroundEffect

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

答案 1 :(得分:0)

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

enter image description here

- (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");
}

希望这有帮助。