My ipad project is master-detail view based. There is a button on detail view’s toolbar, when user tap on the button, it popup a popover view to show four buttons (as menu). Three of buttons’ actions are like the following (the three buttons show three different model form sheets):
- (void) showOnlineSgf
{
NSLog(@"showOnlineSgf");
TGOOnlineSgfViewController *dlg =
[[TGOOnlineSgfViewController alloc] initWithNibName:@"TGOOnlineSgfViewController"
bundle:nil];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:dlg];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:nav animated:YES completion:nil];
dlg = nil;
nav = nil;
}
The other button’s action is to show a MFMailComposeViewController. Code is like the following:
- (void) emailCurrentGame
{
NSLog(@"email current game");
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[self presentModalViewController:picker animated:YES];
picker = nil;
}
The weird behavior is that when I tap the button what should execute showOnlineSgf(), but emailCurrentGame() is actually executed. When I set a breakpoint in showOnlineSgf(), it’s hit, and step by step, each statement in showOnlineSgf() is executed. But the result on screen is a MFMainComposeViewController shows up.
I know this question is hard to answer. Any idea is appreciated.
Check your outlet connection of your
UIButtonthat triggersshowOnlineSgf. Most likely you copy pasted yourUIButtonin Interface Builder, which causes it to copy its assigned action as well. Then you’ve connected your other action, resulting in yourUIButtonhaving two actions.To resolve the problem, simply disconnect your
UIButtonthat triggersshowOnlineSgffrom theemailCurrentGameaction.