6

我想在我的项目中使用“滑动删除”选项。

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{

    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        NSDictionary *userData = [_contactsArray objectAtIndex:indexPath.row];
        NSLog(@"delete row %@",userData);
    }
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{

    return YES;
}

我正在使用此代码,但它给出了我不想要的以下输出。在此处输入图像描述

我不希望单元格上的左侧减号。我只想滑动并显示删除按钮。我在以前的项目中使用的相同代码,它工作正常(即只滑动显示删除按钮,左侧没有减号)

请帮我解决这个问题。

4

4 回答 4

9

您正在为“滑动删除”功能覆盖正确的委托方法。关于减号:

像这样隐藏减号:

self.yourTableView.editing = NO;
//or simply remove this line of code altogether because this property is NO by default

像这样显示减号:

self.yourTableView.editing = YES;
于 2013-08-13T15:07:18.943 回答
3

首先创建您的表视图并将委托和数据源方法设置为该视图。

 self.contacts=[[UITable alloc]init];
    self.contacts.dataSource=self;
    self.contacts.delegate=self;
    self.contacts.userInteractionEnabled=YES;
    //self.contacts.editing = YES;
    [self.view addSubview:self.contacts];

然后重写 Delegate 和数据源方法,对于删除重写以下方法。

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
        // Return YES if you want the specified item to be editable.
        return YES;
    }

    // Override to support editing the table view.
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
        if (editingStyle == UITableViewCellEditingStyleDelete) {
            //add code here for when you hit delete
        }    
    }

对于左侧的减号,使用self.contacts.editing = YES; 就我而言,我不想要这个减号,所以不要使用该属性或设置self.contacts.editing = NO;

谢谢 hw731提醒我这个楼盘,我在这上面浪费了半天时间。

于 2013-08-13T15:16:42.000 回答
1

尝试这个:

 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
        // Return YES if you want the specified item to be editable.
        return YES;
    }

    // Override to support editing the table view.
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
        if (editingStyle == UITableViewCellEditingStyleDelete) {
            //add code here for when you hit delete
        }    
    }
于 2013-08-13T14:38:25.580 回答
0

听起来您正在打开tableView.editing标志,因此行显示为减号。尝试搜索self.tableView.editing = YES;并制作NO或简单地评论该行。

于 2013-08-13T14:59:54.607 回答