2011-06-02 26 views
0

編輯:我想我問了一些在這裏真的錯了,我很抱歉。我在做什麼,是一個老虎機的模擬,但我不認爲這是明智的(只是不想侮辱自己)我把250(50 * 5)圖像放在UIPICKERVIEW,那裏是沒有理由這樣做,我現在的想法是隻使用6個圖像爲每個列不同順序,然後當我旋轉只是一次又一次地通過30(6 * 5)圖像旋轉它們,這將給予相同的效果,同時使用更少的資源,對吧?我看不到我在想什麼,並感謝大家的答案如何用一組reova的圖像初始化NSArray?

實現iOS中複雜的UIPickerView(5個組件),我堅持這個問題...

我有5個NSArrays (對於picker中的每個組件...不可變),我有6個圖像。

我需要初始化每個陣列的圖像集,這將填充50個圖像的數組,設置後集(我猜一些循環,將運行8次,並填充數組與2更多圖像在最後?)

在每個數組中圖像需要以不同的順序,但同樣的數組,集合必須一直是相同的。

當我說一組我的意思是,我需要一次又一次擺在同一順序的圖像,而不是他們在另一個陣列或類似的東西....

任何一個可以幫助有這個?

10倍, 埃雷茲

回答

1

不知道我理解的問題,但是,如果我這樣做,你可以這樣做:

NSArray *set = [NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],/* all the images */ , nil]; 
NSMutableArray *tmp = [[NSMutableArray alloc] init]; 


for (int i = 0; i<50; i++) { 
    [tmp addObject:[set objectAtIndex:(i%6)]]; 
} 

,那麼你可以使用tmp共同NSArray,或者做類似

NSArray *result = [NSArray arrayWithArray:tmp]; 

ps。當你完成時,不要忘記釋放tmp。

+0

這不是我正在尋找的東西,而是給出了一個好主意,10x :-) – Erez 2011-06-02 18:29:59

1
UIImage  *image; 
int    randomIndex; 

NSCountedSet *set = [[NSCountedSet alloc] initWithCapacity:50]; 
NSMutableArray *arrays = [[NSMutableArray alloc] initWithCapacity:5]; 

for (int i = 0; i < 5; i++) { 
    while ([set count] < 50) { 
     randomIndex = arc4random() % 6; 
     image = [images objectAtIndex:randomIndex]; 

     switch ([set count]) { 
      case 48: 
      case 49: 
       if ([set countForObject:image] < 9) { 
        [set addObject:image]; 
       } 
       break; 

      default: 
       if ([set countForObject:image] < 8) { 
        [set addObject:image]; 
       } 
     } 
    } 

    [arrays addObject:[set allObjects]]; 
    [set removeAllObjects]; 
} 

[set release]; 

這個想法將使用一個計數的集合並獲得添加到它的元素的數量。這樣我們可以跟蹤添加的對象。