0

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

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

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

谢谢。

4

2 回答 2

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中我们不能改变,我们只能改变

风格

标题

背景颜色

背景效果

有关更多信息,请参阅Apple 文档

于 2016-08-29T10:41:19.353 回答
-1

您可以创建自定义单元格并将自定义 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");
}

希望这可以帮助。

于 2016-08-29T10:41:35.057 回答