我想在UITableViewCell中更改DELETE按钮。 实际上,我需要:
这里我只能更改以下委托方法中的按钮文字:
- (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];
}
但是如何更改按钮的其他属性。如果有人知道,请告诉我。
感谢。
答案 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添加到单元格中。我有一个例子
- (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");
}
希望这有帮助。