2014-04-22 56 views
1

我想重新排序我的tableview中的行。我已经实施了这两种方法。TableView setEditing也使行删除

- (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设置 - >通知中心,然后按编辑。

有些人可以有一个想法如何做到这一点。

感谢

回答

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......> 
} 
+0

你不需要第3种方法来实现移动行...这些方法仅用于插入和删除。 – NKB

0

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

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

要重新排列的细胞,你应该使用的方法tableView:canMoveRowAtIndexPath:编辑只对插入和删除。更多信息here

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