how to random placement of UIButton and value

前端 未结 8 1403
南方客
南方客 2021-01-28 22:48

i have a question view and will show 4 answers, only 1 are correct.

but i do not want the same button to be always the correct answer.

i will like to know how do

8条回答
  •  情深已故
    2021-01-28 23:12

    I happened to be working on a similar game app, so got some code which will definitely help. Check it out below. Note that I've put it in that you'd call a 'correctAnswerMethod' and a 'wrongAnswerMethod' for the correct and incorrect button clicks.

    // Define the four buttons in their respective frames, create the first button as the correct one, we'll shuffle it later.
    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button1 setTitle:@"Correct Answer" forState:UIControlStateNormal];
    [button1 addTarget:self action:@selector(correctAnswerMethod:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button1];
    
    UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button2 setTitle:@"Wrong Answer 1" forState:UIControlStateNormal];
    [button2 addTarget:self action:@selector(wrongAnswerMethod:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button2];
    
    UIButton *button3 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button3 setTitle:@"Wrong Answer 2" forState:UIControlStateNormal];
    [button3 addTarget:self action:@selector(wrongAnswerMethod:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button3];
    
    UIButton *button4 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button4 setTitle:@"Wrong Answer 3" forState:UIControlStateNormal];
    [button4 addTarget:self action:@selector(wrongAnswerMethod:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button4];
    
    
    //Create an array with the rectangles used for the frames
    NSMutableArray *indexArray = [NSMutableArray arrayWithObjects:
                                  [NSValue valueWithCGRect:CGRectMake(5, 219, 230, 45)], 
                                  [NSValue valueWithCGRect:CGRectMake(5, 273, 230, 45)], 
                                  [NSValue valueWithCGRect:CGRectMake(244, 219, 230, 45)], 
                                  [NSValue valueWithCGRect:CGRectMake(244, 273, 230, 45)], nil];
    
    //Randomize the array
    NSUInteger count = [indexArray count];
    for (NSUInteger i = 0; i < count; ++i) {
        int nElements = count - i;
        int n = (arc4random() % nElements) + i;
        [indexArray exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
    
    //Assign the frames
    button1.frame = [((NSValue *)[indexArray objectAtIndex:0]) CGRectValue];
    button2.frame = [((NSValue *)[indexArray objectAtIndex:1]) CGRectValue];
    button3.frame = [((NSValue *)[indexArray objectAtIndex:2]) CGRectValue];
    button4.frame = [((NSValue *)[indexArray objectAtIndex:3]) CGRectValue];
    

提交回复
热议问题