2014-04-22 57 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; 
}