1

私の場合、値FirstViewcontrollerを含むピッカーがあります。ユーザーが次の画面のピッカーで5を選択すると、25枚の画像からランダムに5枚の画像が表示され、その5枚の画像が繰り返されることはありません。ユーザーが別の番号を選択した場合、その番号を入力として受け取り、その番号に従って画像を表示する必要があります。コードを実行すると、選択されていない25枚の画像すべてが表示されるたびに画像が表示されます。これが私のコードです125

- (void)viewDidLoad {    
    myImageNames = [[NSMutableArray alloc] init];

    [myImageNames addObject:[UIImage imageNamed:@"Red.png"]];
    [myImageNames addObject:[UIImage imageNamed:@"Blue.png"]];
    [myImageNames addObject:[UIImage imageNamed:@"LightRed.png"]];
    [myImageNames addObject:[UIImage imageNamed:@"Orange.png"]];
    .
    .
    .

    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self  selector:@selector(ChangingImgView:) userInfo:nil repeats:YES];
}

- (void) ChangingImgView:(int)selectedNumberFromPicker {
    selectedNumberFromPicker = [num intValue];

    for (int i=0; i < selectedNumberFromPicker; i++) {

        index = arc4random() % 25;
        NSString *strIndex = [NSString stringWithFormat:@"%i",index];
        [myImageNames addObject:strIndex];
        imgBtn = [UIButton buttonWithType:UIButtonTypeCustom];

        imgBtn.frame = CGRectMake(250, 300, 170, 220);
        UIImage *img = [myImageNames objectAtIndex:index];
        [imgBtn setBackgroundImage:img forState:UIControlStateNormal];
        [imgBtn addTarget:self action:@selector(ClickingOnImage) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:imgBtn];
    }
}

私を助けてください。

4

4 に答える 4

1

NSMutableArray を使用する代わりに NSSet を使用することもできます

ドクターアップル

You can use sets as an alternative to arrays when the order of elements isn’t important and performance in testing whether an object is contained in the set is a consideration—while arrays are ordered, testing for membership is slower than with sets.

于 2012-12-20T08:27:12.297 に答える
0

まず、このリンクを使用しているsuffleあなた。myImageNamesimages

からdisplayの最初の 5imagesですmyImageNames

于 2012-12-20T08:22:41.410 に答える
0

この for ループを使用して、ランダム インデックスの特定の数の画像を取得してみてください。selectedImgArray を使用して、選択したイメージを表示します。myImageNames は元の配列です。

NSInteger index;
NSMutableArray *selectedImgArray = [[NSMutableArray alloc] init];
for (int i=0; i < selectedNumberFromPicker; i++) {
    index = arc4random() % 25;
    UIImage *selImg = (UIImage *)[myImageNames objectAtIndex:index];
    if ([selectedImgArray containsObject:selImg]) {
        i--;
        continue;
    }
    [selectedImgArray addObject:selImg];

}
于 2012-12-20T13:34:17.720 に答える
0
int count = 5;
NSMutableArray *inputImages = [myImageNames mutableCopy];
NSMutableArray *randomImages;

for (int i = 0; i<count; i++) {
    int index = arc4random_uniform([inputImages count]);
    [randomImages addObject:[inputImages objectAtIndex:index]];
    [inputImages removeObjectAtIndex:index];
}
于 2012-12-20T13:11:14.930 に答える