положить случайное изображение на uibutton - PullRequest
2 голосов
/ 26 января 2012

Я новичок в Objetive-C и мне нужна помощь,

У меня есть массив с 22 UIImage и 4 UIB-кнопками на виде.Я хочу взять изображение из массива с помощью ObjectAtIndex: somecounter и поместить это изображение случайным образом в одну из 4 кнопок UIB, затем я хочу взять еще 3 UIImages из массива (случайные изображения) и найти их случайным образом в других 3 кнопках UIButton, которыеЯ оставил.

, поэтому каждый раз, когда счетчик находится в числе, возьмите UIImage, сохраненный в этом индексе, найдите его случайным образом в одной из кнопок UIB, затем возьмите другие 3 случайных UIImage из массива инайдите их случайным образом на 3 кнопке UIB, которую я оставил.

как я могу это сделать?

после использования ответа basvk придумал следующее:

-(void)PlaceWordAndPictueOnScreen
{
    NSArray *buttons = [NSArray arrayWithObjects:btnLetter1, btnLetter2, btnLetter3, btnLetter4, nil];
    for (UIButton *btn in buttons) {
        int randomIndex= random() % [LettersArray count];
        UIImage *img = [LettersArray objectAtIndex:randomIndex];
        [btn setImage:img forState:UIControlStateNormal];
        [LettersArray removeObjectAtIndex:randomIndex];                        
    }
}

, поэтому ясделал точно так, как он сказал, и это сработало как шарм, но у меня есть проблема.У меня есть этот счетчик под названием «imgcounter», допустим, он имеет значение «4», я хочу взять изображение, расположенное по индексу 4, и поместить его в одну из кнопок «btnLetter» UIButton, но в случайную кнопку, чем вдругие 3 кнопки «btnLetter», которые остались, чтобы поставить еще 3 случайных UIImage, как я могу это сделать?

Спасибо ..

Ответы [ 3 ]

1 голос
/ 26 января 2012

Из головы, что-то вроде этого:

  -(void)placeImages {
        NSMutableArray *images = [NSMutableArray arrayWithObjects:@"image1.png", @"image2.png", @"image3.png", @"image4.png", @"image5.png", @"image6.png", @"image7.png", @"image8.png", nil]; // etc...
        NSArray *buttons = [NSArray arrayWithObjects:btn1, btn2, btn3, btn4, nil];
        for (UIButton *btn in buttons) {
              int randomIndex= random() % images.length;
              UIImage *img = [images objectAtIndex:randomIndex];
              [btn setImage:img forState:UIControlStateNormal];
              [images removeObjectAtIndex:randomIndex];                        
        }
0 голосов
/ 26 января 2012

btnLetter1, btnLetter2, btnLetter3, btnLetter4 = UIB-кнопки, которые должны представлять изображение.

LatterArray = массив, содержащий все изображения.

imgcounter = текущий индекс счетчика

если 'imgcounter' установлен на '2', то одна из кнопок 'btnLetters' (случайная между 1-4) должна содержать изображение из 'LettersArray', расположенное в индексном номере '2', равном 'imgcounter ». все остальные напоминания 3 'btnLetter' должны содержать случайное изображение из 'LettersArray'.

когда функция, снова вызвавшая imgcounter, будет иметь значение «3», теперь один из «случайных» (btnLetters) должен содержать другое изображение из «LettersArray», которое находится под индексным номером «3», снова равным «imgcounter». другое напоминание 3 «btnLetter» должно снова содержать случайное изображение из «массива букв» и т. д.

-(void)PlaceWordAndPictueOnScreen2
{
    NSMutableArray * ButtonArray = [[NSMutableArray alloc] initWithObjects:btnLetter1,btnLetter2,btnLetter3,btnLetter4, nil];
    int CorrectImg = random() % [ButtonArray count];

    UIImage * img = [UIImage imageNamed:[LettersArray objectAtIndex:imgcounter]];
    UIButton * btn = [ButtonArray objectAtIndex:CorrectImg];
    [btn setImage:img forState:UIControlStateNormal];
    [ButtonArray removeObjectAtIndex:CorrectImg];

    NSLog(@"img correct: %i",CorrectImg);

    while ([ButtonArray count] != 0)// how many times u want to run this
    {
        int imgRand = random() % [LettersArray count]; //number for random image
        int btnRand = random() % [ButtonArray count]; //number for random button
        //get that random image
        UIImage * img = [UIImage imageNamed:[LettersArray objectAtIndex:imgRand]];
        //get that random button
        UIButton * button = [ButtonArray objectAtIndex:btnRand];
        //put image on that button
        [button setImage:img forState:UIControlStateNormal];
        [ButtonArray removeObjectAtIndex:btnRand];

        NSLog(@"btnrnd: %i",btnRand);
        NSLog(@"imgrnd: %i",imgRand);
    }
}
0 голосов
/ 26 января 2012
-(void)randomizeArray:(NSMutableArray *)array
{
    int i, n = [array count];
    for(i = 0; i < n; i++) {
        int destinationIndex = random() % (n - i) + i;
        [array exchangeObjectAtIndex:i withObjectAtIndex:destinationIndex];
    }
}

это ответ на ваш вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...