2014-02-24 142 views
0

我正在使用此代碼爲UIImageView生成隨機圖像。當我點擊按鈕時,它會顯示另一張圖片。我想問你如何創建四個圖像瀏覽 - 點擊按鈕 - > apears四個不同的隨機圖像。顯示四個隨機圖像

ViewController.h

@interface ViewController : UIViewController { 
    IBOutlet UIImageView *imageView; 
    // IBOutlet UIImageView *imageView2; 
} 
-(IBAction) randomImage; 

ViewController.m

- (IBAction) randomImage { 
NSArray *images = [[NSArray alloc] initWithObjects:@"image1.jpg", @"image2.jpg", @"image3.jpg", @"image4.jpg", nil]; 
int count = [images count] 
int index = arc4random() % count; 

imageView.image = [UIImage imageNamed:[images objectAtIndex:index]]; 
// imageView2.image = .... 
} 

我創建的故事板4個imageViews和我試圖像// imageView2.image以上......但它不是正確的解決方案:-) 謝謝你的幫助

回答

0

而不是使用IBOutlet UIImageView *imageView;,使用IBOutletCollection(UIImageView) NSArray *imageViews;並連接一個你的圖像視圖的這一點。

然後,在你的代碼:

- (IBAction) randomImage { 
    NSArray *images = [[NSArray alloc] initWithObjects:@"image1.jpg", @"image2.jpg", @"image3.jpg", @"image4.jpg", nil]; 
    NSInteger count = [images count]; 

    for (UIImageView *imageView in self.imageViews) { 
     NSInteger index = arc4random() % count; 

     imageView.image = [UIImage imageNamed:[images objectAtIndex:index]]; 
    } 
} 
+0

它顯示一個隨機,而是一個可以顯示超過一次。 – jbouaziz

+0

對於'IBOutletCollection'爲+1,對於重複圖像爲-1。 – zaph

3

代碼列出4個隨機圖像:

NSMutableArray *images = [[NSMutableArray alloc] initWithArray: @[@"image1.jpg", @"image2.jpg", @"image3.jpg", @"image4.jpg"]]; 
int countImg = images.count; 

for (int i = 0; i < countImg; i++) { 
    NSInteger index = arc4random() % images.count; 
    NSLog(@"Image%d name = %@",i , [images objectAtIndex:index]); 
    [images removeObjectAtIndex:index]; 
} 
+0

而不是arc4random()%count使用arc4random_uniform(count)消除偏差。 – zaph

+0

謝謝@Zaph :) :) – larva

+0

我在做循環之前計算了圖像的數量 – larva