我目前在我正在处理的应用程序中有一个按钮,当我按下按钮时,它似乎没有在按下时调用该方法。我以为添加了所有正确的代码,并正确连接了所有内容,但事实似乎并非如此。
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
最佳答案
该按钮工作正常,所以如果您遇到问题,我建议您引用 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,您不需要对代码做任何事情。
最后,我要确保避免场景之间的循环引用。您不应该从 A
到 B
然后再进行模态转换(或 presentViewController
或 presentModalViewController
)从 B
到 A
。如果您执行从 A
到 B
的模式转场,您应该调用 dismissViewControllerAnimated
返回到 A
。否则,您将有两个 A
实例 float 。
关于iOS - 按下按钮时不调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913687/