[英]how to display images without repeatition from array in objective-c?
我能夠從一個陣列中顯示8張圖像中的5張。 但是正在使用此代碼獲得重復的圖像:
int index1 = arc4random()%8;
UIImage *card1=[UIImage imageNamed:[imageArray objectAtIndex:index1]];
[b1 setImage:card1 forState:UIControlStateNormal];
int index2 = arc4random()%8;
UIImage *card2=[UIImage imageNamed:[imageArray objectAtIndex:index2]];
[b2 setImage:card2 forState:UIControlStateNormal];
int index3 = arc4random()%8;
UIImage *card3=[UIImage imageNamed:[imageArray objectAtIndex:index3]];
[b3 setImage:card3 forState:UIControlStateNormal];
int index4 = arc4random()%8;
UIImage *card4=[UIImage imageNamed:[imageArray objectAtIndex:index4]];
[b4 setImage:card4 forState:UIControlStateNormal];
int index5 = arc4random()%8;
UIImage *card5=[UIImage imageNamed:[imageArray objectAtIndex:index5]];
[b5 setImage:card5 forState:UIControlStateNormal];
使用原始數組創建一個NSMutableArray,然后將其隨機播放。 對於改組,您可以使用以下代碼:
// NSMutableArray_Shuffling.h
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#else
#include <Cocoa/Cocoa.h>
#endif
// This category enhances NSMutableArray by providing
// methods to randomly shuffle the elements.
@interface NSMutableArray (Shuffling)
- (void)shuffle;
@end
// NSMutableArray_Shuffling.m
#import "NSMutableArray_Shuffling.h"
@implementation NSMutableArray (Shuffling)
- (void)shuffle
{
static BOOL seeded = NO;
if(!seeded)
{
seeded = YES;
srandom(time(NULL));
}
NSUInteger count = [self count];
for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = count - i;
int n = (random() % nElements) + i;
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
}
}
@end
您可以像這樣使用改組:
NSMutableArray* array = [NSMutableArray arrayWithArray:imageArray];
[array shuffle];
[array objectAtIndex:0];
[array objectAtIndex:1];
[array objectAtIndex:2];
[array objectAtIndex:3];
[array objectAtIndex:4];
...
改組代碼來自這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.