TableView setEditing还可以启用行删除

时间:2014-04-22 09:00:24

标签: ios iphone uitableview

我想重新排序tableview中的行。我已经实现了这两种方法。

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath{
    NSLog(@"Move Row At IndexPath");
}

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

    NSLog(@"Can Move Row At IndexPath");
    if(indexPath.section == 0 || (indexPath.section == 1 && indexPath.row == 0)){
        NSLog(@"Don't Move");
        return NO;
    }
    return YES;

}

现在我只想重新排序单元格,并且不希望用户删除单元格。但是当我启用编辑[tableView setEditing:yes animated:YES];时,它还允许用户从表视图中删除项目我只想在表格视图中显示重新排序控件,如iphone设置 - >上的那个。通知中心,然后按编辑。

有些人可以知道如何做到这一点。

由于

4 个答案:

答案 0 :(得分:2)

尝试以这种方式实施

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

// method to remove "-" sign from editing mode
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
   return UITableViewCellEditingStyleNone;
}

-(BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return NO;
}

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

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath 
{
    // Update your datasource here and work accordingly......>
}

答案 1 :(得分:0)

实施tableView:canEditRowAtIndexPath:并向其返回NO。默认情况下,所有行都是可编辑的。

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

答案 2 :(得分:0)

要重新排序单元格,您应该使用方法tableView:canMoveRowAtIndexPath:编辑仅用于插入和删除。更多信息here

答案 3 :(得分:0)

使用后:

[tableView setEditing:yes animated:YES]; 

使用以下:

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

    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {

}

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

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleNone;
}

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}