UIImageViews içeren NSMutableDictionary ... Bir NSMutableArray öğesine değiştirilebilen kopya ekle Alternatif?

Bir sözlükteki anahtar değerleriyle diziler halinde kelimeler oluşturmaya çalışıyorum. Bununla birlikte, istediğim şekilde çalışmayacak çünkü bir UIImageView "kopyalayamıyorum".

MÜKEMMEL, eğer sözlükten bir diziye bir harf eklenirse, bana gerçek nesne yerine bir kopyasını verir. Aynı mektubun birden çok görüntüsünü yapmak ve onu sözlüğe eklemek istemiyorum çünkü daha sonra "s" veya "a" anahtar kelimesini kullanarak arama yapamadım ve aynı harfleri kullanmak için birden fazla diziye ihtiyacım var. zamanında.

Ne yapabilirim?

//How I create the letters
        char s = 's';
        NSString *key = [NSString stringWithFormat:@"%c", s];
        alphabetS = [[UIImageView alloc] init]];
        [alphabetS setImage:[UIImage imageNamed:@"s.png"]];
        [allTilesDictionary setObject:alphabetS forKey:key];
        [alphabetS release];


//How I use the imageviews from the dictionary
    NSMutableArray *wordOne = [[NSMutableArray alloc] initWithObjects:[allTilesDictionary objectForKey:@"s"],[allTilesDictionary objectForKey:@"h"],[allTilesDictionary objectForKey:@"o"],[allTilesDictionary objectForKey:@"p"], nil];

DÜZENLEME: Benim çözümüm. Mükemmel çalışıyor.

for (UIImageView *letters in wordOne)
{

    newLetter = [[UIImageView alloc] init];
    newLetter.image = letters.image;
    newLetter.userInteractionEnabled = YES;

    //I can now either lay them out wherever I want on the view, or add them to a new array.
}
0
Neden bir kopyasına ihtiyacınız var? Bunu düşün, belki kopyalamayı engelleyebilirsin. Değilse, UIImageView özel alt sınıfına NSCopying protokolü uygulamalısınız. Çok kolay değil, sanırım. Bu konuda bilgi edinin buradaki
katma yazar Pavel Oganesyan, kaynak
Mükemmel bir çözüm düşünmüştüğüme inanıyorum. İyi bir gece uykusu vardı ve uyandım ve duşta düşündüm. Benim düşünceme göre çalışırsa çözümümüzü gönderirim ve insanlar merak edilir. Benim çözümüm Daniel'in söylediği gibi bir şey kullanıyor.
katma yazar Jason, kaynak
Çözümümle güncellendi.
katma yazar Jason, kaynak
Görüntüyü görüntülemeden ziyade neden saklamıyorsunuz? Görüntüler paylaşılabilir.
katma yazar Hot Licks, kaynak

2 cevap

for (UIImageView *letters in wordOne)
{

    newLetter = [[UIImageView alloc] init];
    newLetter.image = letters.image;
    newLetter.userInteractionEnabled = YES;

    //I can now either lay them out wherever I want on the view, or add them to a new array.
}
0
katma
Ah. Bahşiş için teşekkürler. :)
katma yazar Jason, kaynak
Ancak gereksiz yere "harfler" içinde UIImageViews yaratıyorsunuz. Sadece görüntüleri yerine koy.
katma yazar Hot Licks, kaynak

Orijinal kodunuz biraz değiştirildi:

//How I create the letters
        char s = 's';
        NSString *key = [NSString stringWithFormat:@"%c", s];
        [allTilesDictionary setObject:[UIImage imageNamed:@"s.png"] forKey:key];


//How I use the imageviews from the dictionary
    NSMutableArray *wordOne = [[NSMutableArray alloc] initWithObjects:[allTilesDictionary objectForKey:@"s"],[allTilesDictionary objectForKey:@"h"],[allTilesDictionary objectForKey:@"o"],[allTilesDictionary objectForKey:@"p"], nil];

Bu kodu kullanmanız biraz değiştirildi:

for (UIImage *letters in wordOne)
{

    newLetter = [[UIImageView alloc] init];
    newLetter.image = letters;
    newLetter.userInteractionEnabled = YES;

    //I can now either lay them out wherever I want on the view, or add them to a new array.
}

Gereksiz UIImageViews oluşturulmadı.

0
katma