0
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)oldPath toIndexPath:(NSIndexPath *)newPath {

    if(oldPath.section == newPath.section && oldPath.row == newPath.row) return;

    NSMutableArray * group = (NSMutableArray *) self.groups;
    NSMutableArray *gItems = [group objectAtIndex:oldPath.section];
    NSDictionary *item  = [gItems objectAtIndex:oldPath.row];
    [gItems removeObjectAtIndex:oldPath.row];
    gItems = [group objectAtIndex:newPath.section];
    [gItems insertObject:item atIndex:newPath.row];

    [self.tableItems moveRowAtIndexPath:oldPath toIndexPath:newPath];    
}

セクション間で行を移動しようとしています。ただし、行を実行するたびにクラッシュ[self.tableItems moveRowAtIndexPath:oldPath toIndexPath:newPath]します。何が間違っていましたか? 事前にタイ。

4

2 に答える 2

2

「オフバイワン」エラーがあります:

if (newPath.row >= gItems.count) {
    [gItems addObject: item];
} else {
    [gItems insertObject: item atIndex:newPath.row];
}
于 2012-08-22T04:10:23.437 に答える
0

問題を理解しました....削除するだけで問題[self.tableItems moveRowAtIndexPath:oldPath toIndexPath:newPath];なく動作します。

于 2012-08-22T04:48:40.607 に答える