2013-03-12 72 views
0

我有一個的NSMutableArray我填充的UIImageViews這樣的:更改分配給一個UIImageView所述的UIImage在陣列

NSMutableArray *digitArray; 

spaces = [[NSMutableArray alloc] initWithCapacity:16]; 

[spaces addObject:space1]; 
[spaces addObject:space2]; 
[spaces addObject:space3]; 
[spaces addObject:space4]; 
[spaces addObject:space5]; 
[spaces addObject:space6]; 
[spaces addObject:space7]; 
[spaces addObject:space8]; 
[spaces addObject:space9]; 
[spaces addObject:space10]; 
[spaces addObject:space11]; 
[spaces addObject:space12]; 
[spaces addObject:space13]; 
[spaces addObject:space14]; 
[spaces addObject:space15]; 
[spaces addObject:space16]; 

我然後將圖像分配到每個的UIImageViews的,是這樣的:

[(UIImageView *)spaces[0] setImage:one]; 
[(UIImageView *)spaces[1] setImage:two]; 
[(UIImageView *)spaces[2] setImage:three]; 
[(UIImageView *)spaces[3] setImage:four]; 
[(UIImageView *)spaces[4] setImage:five]; 
[(UIImageView *)spaces[5] setImage:six]; 
[(UIImageView *)spaces[6] setImage:seven]; 
[(UIImageView *)spaces[7] setImage:eight]; 
[(UIImageView *)spaces[8] setImage:nine]; 
[(UIImageView *)spaces[9] setImage:ten]; 
[(UIImageView *)spaces[10] setImage:eleven]; 
[(UIImageView *)spaces[11] setImage:twelve]; 
[(UIImageView *)spaces[12] setImage:thirteen]; 
[(UIImageView *)spaces[13] setImage:fourteen]; 
[(UIImageView *)spaces[14] setImage:fifteen]; 
[(UIImageView *)spaces[15] setImage:sixteen]; 

因此,以此作爲我的默認組合,我希望能夠隨機更改將哪個圖像分配給哪個UIImageVIew。任何人都可以提出一種做法嗎?

在此先感謝!

喬治

+1

當然,你可以使用for循環而不是一個接一個地寫出來嗎? – lifetimes 2013-03-12 14:17:00

回答

0

認爲這應該這樣做

NSMutableArray *temp = [[NSMutableArray alloc] init]; 
while(space.count > 0){ 

    int index = arc4random_uniform(space.count); 
    [temp addObject:[spaces objectAt:index]]; 
    [space removeObjectAtIndex:index]; 
} 

spaces = temp; 

havnt測試的代碼,但它需要1周隨機的ImageView從空間,並把它變成一個臨時數組,然後從空間onces所有對象有已被放入溫度它將其分配回空間

+0

我覺得他需要一些更像 'UIImageView * img1 = [spaces objectAtIndex:randomNumber1]; UIImageView * img2 = [spaces objectAtIndex:randomNumber2]; ;' 並把它放在循環中 – 2013-03-12 14:31:50

+0

假設你有16個圖像在數組中,並且想要一個0-15之間的隨機索引,你可以用'rand()%16'生成'randomNumber' – 2013-03-12 14:36:22

+0

啊是的,誤解了他的問題 – Fonix 2013-03-12 14:48:07

0
UIImageView *firstImage = [spaces objectAtIndex:arc4random_uniform(16)]; 

UIImageView *secondImage = [spaces objectAtIndex:arc4random_uniform(16)]; 

UIImageView *tempImage = firstImage; 

firstImage.image = secondImage.image; 

secondImage.image = tempImage.image; 

雖然可能有一個更短的方法。但是這應該可以做到這一點。 隨機的意思,這兩個圖像可能是相同的。這並沒有損害,但實際上什麼都不會改變。

+0

當然,這意味着可以將相同的數字分配給多個UIImageView? – George 2013-03-12 15:10:57

+0

是的。然後它自己交換。但沒有傷害完成。如果他覺得這個事件應該被排除,你可以申請並修補一下。 – 2013-03-12 15:17:24

0

對於任何有興趣的人,我通過創建第二個數組numbers來實現我想要的目標,並將其填充圖像。然後我隨機這個第二陣列:

for (int i = 0; i < 16; i++) { 
    int j = arc4random() % 16; 
    [numbers exchangeObjectAtIndex:i withObjectAtIndex:j]; 
} 

我然後被分配的各種的UIImageViews的圖象中的第一陣列中的第二陣列

 [(UIImageView *)spaces[0] setImage:numbers[0]]; 
    [(UIImageView *)spaces[1] setImage:numbers[1]]; 
    .... etc 

的圖像由於組成數字陣列的混合,numbers[0]numbers[1]等內容,每次都會有所不同。

謝謝大家的回答!

相關問題