Tim Büthe
Tim Büthe

Reputation: 63734

Why does UIActionSheet cancel crash my App?

I try to use the UIActionSheet within my iPhone App but have the following problem. When I tap the cancel button "I don't", the app crashes. When I remove the NSLog statement from the actionSheet:clickedButtonAtIndex: it does not. The "Yes, do it" button works just fine and I see the log statement in the console. What's wrong?

- (void) doItWithConfirm {

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"do you really wanna do it?" 
                            delegate:self cancelButtonTitle:@"I don't" destructiveButtonTitle: nil
                            otherButtonTitles:@"Yes, do it", nil];

    [actionSheet showInView:self.view];
    [actionSheet release];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    NSLog(@"buttonIndex: %@", buttonIndex);
}

Upvotes: 1

Views: 617

Answers (1)

kennytm
kennytm

Reputation: 523244

NSLog(@"buttonIndex: %@", buttonIndex);

buttonIndex is an integer, and the %@ only expects ObjC objects (not integers). This mismatch make the system crashes. Use

NSLog(@"buttonIndex: %d", buttonIndex);

instead.

Upvotes: 4

Related Questions