views:

108

answers:

1

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);
}
+2  A: 
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.

KennyTM
isn't NSInteger a ObjC object?
Tim Büthe
it is defined as: typedef int NSInteger;
Vladimir
Hint - look at the decleration NSInteger buttonIndex. There is no *
willcodejavaforfood
I see, thank you
Tim Büthe