我的ipad项目基于主从视图。详细视图的工具栏上有一个按钮,当用户点击按钮时,它会弹出一个弹出视图以显示四个按钮(作为菜单)。三个按钮的操作如下所示(三个按钮显示了三个不同的模型表单):

- (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;
}

另一个按钮的操作是显示MFMailComposeViewController。代码如下:
- (void) emailCurrentGame
{
    NSLog(@"email current game");
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;
    [self presentModalViewController:picker animated:YES];
    picker = nil;
}

奇怪的行为是,当我点击按钮时,应执行showOnlineSgf(),但实际上已执行emailCurrentGame()。当我在showOnlineSgf()中设置断点时,命中该断点并逐步执行showOnlineSgf()中的每个语句。但是屏幕上的结果是出现了MFMainComposeViewController。

我知道这个问题很难回答。任何想法表示赞赏。

最佳答案

检查触发UIButtonshowOnlineSgf的插座连接。您很可能在Interface Builder中复制粘贴了UIButton,这也会导致它也复制其分配的操作。然后,您已经连接了另一个动作,导致UIButton具有两个动作。

要解决该问题,只需从UIButton操作中断开触发showOnlineSgfemailCurrentGame即可。

10-08 05:44