1

私は現在、iCarousel Multiple Carousel例を試しています。ここに私の配列で、NSMutableDictionaryで画像を追加しました:

私はこれらのうちの2つを持っています:(ViewDidLoadにロードされたカルーセルの2つのスロットのmyImagesとmyImages2)

self.myImages = [NSMutableArray array];
for(int i = 0; i <= 10; i++) 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];

    NSString *savedPath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"myImages%d.png", i]]; 
    if([[NSFileManager defaultManager] fileExistsAtPath:savedPath]){ 
        NSMutableDictionary *container = [[NSMutableDictionary alloc] init];
        [container setObject:[UIImage imageWithContentsOfFile:savedPath] forKey:@"image"];
        [container setObject:[NSNumber numberWithInt:i] forKey:@"index"];
        [images addObject:container];
        [container release]; // if not using ARC 
    } 
}

私のiCarouselで:

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
    if (carousel == carousel1)
    {
        NSDictionary *obj = [items1 objectAtIndex:index];
        view = [[UIImageView alloc] initWithImage:[obj objectForKey:@"items1"]];
        view.tag = index;
    }else
    {
        NSDictionary *obj = [items2 objectAtIndex:index];
        view = [[UIImageView alloc] initWithImage:[obj objectForKey:@"items2"]];
        view.tag = index;
    }

    return view;
}

別のビューでは、これらの配列も読み込まれ、ユーザーは比較する画像を選択する機会があります。

ユーザーが画像を選択すると、そのタグに相当するintが私の2つのカルーセルがある場所に渡されます。

これが私がそれらを比較する方法です:

NSInteger image = [prefs integerForKey:@"image"];
NSInteger image1 = [prefs integerForKey:@"image2"];

        if (image == [(UIImageView*)[self.carousel1 currentItemView] tag] || image2= [(UIImageView*)[self.carousel2 currentItemView] tag] || ) {

この方法でインデックスを削除します。

    NSInteger index = carousel1.currentItemIndex;
    [carousel1 removeItemAtIndex:index animated:YES];
    [items1 removeObjectAtIndex:index]; 

インデックスが更新されていないので、間違って削除していると思います。私が望んでいたのは、この画像のようにインデックスを調整しないようにすることです。

NSMutableArrayでの削除

4

1 に答える 1

0

あなたが今何をしようとしているのか、つまり中央のカルーセルが一致するまで2つのカルーセルを移動することを理解していれば、インデックスが単純に消えないようにするために、配列からアイテムを削除するのではなく、場所を埋めることができますnil 画像 (または選択した裏付けのある有効な画像) で削除しようとしており、それが既に一致していることを示すタグ。

これはもちろん、あなたが望むものについての私の理解が有効かどうかにかかっています。

于 2012-06-26T14:56:02.323 に答える