I am writing a puzzle. When the user clicks the validation button, I see if the solution was entered correctly. Depending on the result, I present one of two action sheets for them. At the moment, I have several NSLog instructions to make sure everyone gets called, but only one of the sheets seems to work correctly.
Nothing triggers when I click a button in showErrorsActionSheet . The action screen disappears from the screen, but the logs are never printed.
I suspect this has something to do with the two action sheets declared to the same delegate (self)
- (void) checkSolution { //code determines the value of the BOOL allCorrect if (allCorrect) { //IF ALL OF THE LETTERS WERE CORRECT //display UIAlertView; NSLog(@"allCorrect"); UIActionSheet *levelCompleteActionSheet = [[UIActionSheet alloc] initWithTitle:@"Congratulations! You Have Finished the Level!" delegate:self cancelButtonTitle:@"Review my work" destructiveButtonTitle:@"Choose next puzzle" otherButtonTitles:nil, nil]; [levelCompleteActionSheet showInView:self.view]; [levelCompleteActionSheet release]; } else { //[self showIncorrectLettersInRed]; UIActionSheet *showErrorsActionSheet = [[UIActionSheet alloc] initWithTitle:@"Sorry, thats not right. Show errors in red?" delegate:self cancelButtonTitle:@"No Thanks, I'll keep trying" destructiveButtonTitle:@"Yes please, I'm stuck!" otherButtonTitles:nil, nil]; [showErrorsActionSheet showInView:self.view]; [showErrorsActionSheet release]; } }
methods to be called:
- (void) levelCompleteActionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex != [actionSheet cancelButtonIndex]) { NSLog(@"return to levelSelect"); //pushViewController:levelSelect } else { NSLog(@"continue to examine solution"); } } - (void) showErrorsActionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex != [actionSheet cancelButtonIndex]) { NSLog(@"show errors in red"); } else { NSLog(@"continue to try"); } }
and Ive declared the UIActionSheet protocol in the interface file as follows:
@interface GamePlay : UIViewController <UIActionSheetDelegate> {
source share