我目前在我正在处理的应用程序中有一个按钮,当我按下按钮时,它似乎在按下时不会调用该方法。我想添加了所有正确的代码,并正确地连接了一切,但情况似乎并非如此。
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");
}
执行甚至没有达到方法中的第一个日志语句。
事情就这样了,
另一方面,显示“Logs”的按钮似乎正在加载场景,但无论出于何种原因,“dev”按钮都不想调用方法/加载场景。
哦,所有内容的源代码都可以在这里找到,https://github.com/ipatch/KegCop
答案 0 :(得分: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,你不需要对代码做任何事情。
最后,我要确保你避免场景之间的循环引用。您不应该从presentViewController
到presentModalViewController
进行模态segue(或A
或B
),然后再从B
到A
。如果您执行从A
到B
的模态转换,则应致电dismissViewControllerAnimated
以返回A
。否则,您将有两个A
浮动的实例。