1

我目前在我正在处理的应用程序中有一个按钮,当我按下按钮时,它似乎在按下时没有调用该方法。我以为添加了所有正确的代码,并正确连接了所有内容,但似乎并非如此。

ViewControllerRootHome.h

@property (weak, nonatomic) IBOutlet UIButton *btndev;

- (IBAction)showDev:(id)sender;

ViewControllerRootHome.m

@synthesize btndev = _btndev;

- (IBAction)showDev:(id)sender {

    NSLog(@"dev button pressed");
    //dev button pressed
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    ViewControllerDev *dev = (ViewControllerDev *) [storyboard instantiateViewControllerWithIdentifier:@"dev"];
    [self presentModalViewController:dev animated:YES];
    NSLog(@"dev button press End");
}

执行甚至没有到达方法中的第一个日志语句。

事情是这样安排的,

在旁注中,读取“日志”的按钮似乎可以正常加载场景,但无论出于何种原因,“开发”按钮都不想调用该方法/加载场景。

哦,一切的源代码都可以在这里找到,https://github.com/ipatch/KegCop

接线

4

1 回答 1

2

该按钮工作正常,所以如果您遇到问题,我会向您推荐 AliSoftware 关于确保清理您的构建的评论。但是,如果您查看方法名称的左侧,当正确连接showDev时,您会看到一个实心的项目符号:IBOutlet

在此处输入图像描述

如果您将其与另一种方法(此方法)进行比较,saveMasterEmail则当前未正确连接,方法左侧的空圆圈证明了这一点:

在此处输入图像描述

无关,您的代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewControllerDev *dev = (ViewControllerDev *) [storyboard instantiateViewControllerWithIdentifier:@"dev"];
[self presentModalViewController:dev animated:YES];

可以简化为:

UIViewController *dev = [self.storyboard instantiateViewControllerWithIdentifier:@"dev"];
[self presentModalViewController:dev animated:YES];

或者,更简单的是,为那个按钮定义一个 segue,你不需要对代码做任何事情。

最后,我会确保避免场景之间的循环引用。您不应该从to再从to进行模态搜索(或presentViewControlleror presentModalViewController)。如果您从to进行模态转换,您应该调用to return to 。否则,您将有两个浮动实例。ABBAABdismissViewControllerAnimatedAA

于 2013-04-10T02:07:05.197 回答