Search code examples
iosobjective-cnsarray

Set Images Randomly for buttons from array and take button's cgrect's from array


I have 42 buttons in my storyboard and I have take array of images. In this array there are total 7 images.

NSArray *arrimg=[NSArray arrayWithObjects:@"book.png", @"lock.png", @"Exclamation.png", @"game.png", @"Music.png", @"Videos.png", @"Camera32.png", nil];

So how could I take random images every time on button?

Should I take button collection or do anything else?

Note:- I have not take buttons programatically.

a new question stand: how to take all 42 button's CGRect from array and display randomly in screen.

NSMutableArray *mutarr=[[NSMutableArray alloc]init];
NSMutableArray *array=[NSMutableArray arrayWithArray:mutarr];
[array addObject:[NSValue valueWithCGRect:CGRectMake(50, 50, 47, 25)]];
[array addObject:[NSValue valueWithCGRect:CGRectMake(97, 50, 47, 25)]];
[array addObject:[NSValue valueWithCGRect:CGRectMake(144, 50, 47, 25)]];
CGRect someRect1 = [[array objectAtIndex:0] CGRectValue];
CGRect someRect2 = [[array objectAtIndex:0] CGRectValue];
CGRect someRect3 = [[array objectAtIndex:0] CGRectValue];

I don't know what to do ahead.


Solution

  • I have tried this and it works...

    in viewdidload:

    arrimg=[[NSMutableArray alloc]initWithObjects:@"book.png",@"lock.png",@"Exclamation.png",@"game.png",@"Music.png",@"Videos.png",@"Camera32.png", nil];
    
    
    NSMutableArray *mutArrayb = [NSMutableArray arrayWithArray:arrimg];
    NSUInteger count = [mutArrayb count];
    if (count > 1)
    {
        for (NSUInteger i = count - 1; i > 0; --i) {
            [mutArrayb exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform((int32_t)(i + 1))];
            NSLog(@"%@",[mutArrayb objectAtIndex:i]);
        }
    }
    //rndmim=[[NSMutableArray alloc]initWithCapacity:7];
    rndmim = [NSMutableArray arrayWithArray:mutArrayb];
    for (int i=0; i<7; i++)
    {
        NSLog(@"%d  %@",i,[rndmim objectAtIndex:i]);
        [btn1 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn2 setImage:[UIImage imageNamed:[rndmim objectAtIndex:1]] forState:UIControlStateNormal];
        [btn3 setImage:[UIImage imageNamed:[rndmim objectAtIndex:2]] forState:UIControlStateNormal];
        [btn4 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn5 setImage:[UIImage imageNamed:[rndmim objectAtIndex:4]] forState:UIControlStateNormal];
        [btn6 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn7 setImage:[UIImage imageNamed:[rndmim objectAtIndex:6]] forState:UIControlStateNormal];
        [btn8 setImage:[UIImage imageNamed:[rndmim objectAtIndex:1]] forState:UIControlStateNormal];
        [btn9 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn10 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn11 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn12 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn13 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn14 setImage:[UIImage imageNamed:[rndmim objectAtIndex:1]] forState:UIControlStateNormal];
        [btn15 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn16 setImage:[UIImage imageNamed:[rndmim objectAtIndex:2]] forState:UIControlStateNormal];
        [btn17 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn18 setImage:[UIImage imageNamed:[rndmim objectAtIndex:1]] forState:UIControlStateNormal];
        [btn19 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn20 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn21 setImage:[UIImage imageNamed:[rndmim objectAtIndex:2]] forState:UIControlStateNormal];
        [btn22 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn23 setImage:[UIImage imageNamed:[rndmim objectAtIndex:4]] forState:UIControlStateNormal];
        [btn24 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn25 setImage:[UIImage imageNamed:[rndmim objectAtIndex:6]] forState:UIControlStateNormal];
        [btn26 setImage:[UIImage imageNamed:[rndmim objectAtIndex:4]] forState:UIControlStateNormal];
        [btn27 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn28 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn29 setImage:[UIImage imageNamed:[rndmim objectAtIndex:1]] forState:UIControlStateNormal];
        [btn30 setImage:[UIImage imageNamed:[rndmim objectAtIndex:6]] forState:UIControlStateNormal];
        [btn31 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn32 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn33 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn34 setImage:[UIImage imageNamed:[rndmim objectAtIndex:6]] forState:UIControlStateNormal];
        [btn35 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn36 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn37 setImage:[UIImage imageNamed:[rndmim objectAtIndex:0]] forState:UIControlStateNormal];
        [btn38 setImage:[UIImage imageNamed:[rndmim objectAtIndex:1]] forState:UIControlStateNormal];
        [btn39 setImage:[UIImage imageNamed:[rndmim objectAtIndex:2]] forState:UIControlStateNormal];
        [btn40 setImage:[UIImage imageNamed:[rndmim objectAtIndex:3]] forState:UIControlStateNormal];
        [btn41 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
        [btn42 setImage:[UIImage imageNamed:[rndmim objectAtIndex:5]] forState:UIControlStateNormal];
    }
    

    when i go back to previous view and come back again in this view images change again...it works well....