0

画像といくつかの文字列を格納する辞書(NSMutableDictionary )の配列(NSMutableArray )があります。

@interface SelectViewController () {
    NSMutableArray *pictureArray;
    NSMutableDictionary *dict1;
    UIImage *key1; // UIImage
    NSString *key2; // file name
    NSString *key3; // file path
    NSString *key4; // description
    NSString *key5; // order    
}

ユーザーに行の並べ替えを許可したい。

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    UIImage *image = [[pictureArray objectAtIndex:indexPath.row] objectForKey:key1];
    cell.imageView.image = image;
    NSString *filename = [[pictureArray objectAtIndex:indexPath.row] objectForKey:key2];
    cell.textLabel.text = filename;
    cell.showsReorderControl = YES;
    return cell;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    NSLog(@"From %i to %i",fromIndexPath.row,toIndexPath.row);
}

そのため、各テーブル行に灰色の記号が表示され、ユーザーは行を並べ替えることができます。私の質問は、テーブルに表示されているものに基づいて配列(pictureArray)をどのように並べ替えることができるかです。この配列を別のクラスにセグエ渡します。配列の出現順序はまだ変更されていません。

アドバイスありがとうございます。

4

1 に答える 1

2
- (void) tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)targetIndexPath
{
    NSUInteger sourceIndex = [sourceIndexPath row];
    NSUInteger targetIndex = [targetIndexPath row];
    if (sourceIndex != targetIndex)
    {
        NSString *item = [pictureArray objectAtIndex:sourceIndex];
        [pictureArray removeObject:item];
        [pictureArray insertObject:item atIndex:targetIndex];
    }
}

これを置くだけ

于 2013-03-26T11:41:58.843 に答える