我试图通过直接从按钮上执行它来关闭呈现的视图控制器,而不是仅仅为此创建一个单独的方法,但是我迷失了如何使它起作用,甚至是不可能的。
任何提供的帮助表示赞赏!
我正在尝试的代码:
[dismissButton addTarget:self action:@selector(dismissViewControllerAnimated:YES completion:NULL) forControlEvents:UIControlEventTouchUpInside];
我不想做的是:
- (void)dismissThis
{
[self dismissViewControllerAnimated:YES completion:NULL];
}
它不会那样工作。从UIControl
s的文档中addTarget:action:forControlEvents:
:
动作消息可以有选择地按该顺序包括发送者和事件作为参数。
因此,您有三个可能的选择器:
@selector(name)
@selector(nameWithParam:)
@selector(nameWithParam: otherParam:)
如果您的选择器是选择器@selector(dismissViewControllerAnimated:completion:)
,则将使用发送器而不是动画BOOL来调用它,并且使用事件而不是完成处理程序块来调用它,这会使您的应用程序崩溃。
编辑以弄清其崩溃原因:dismissViewControllerAnimated:completion:
通过发送copy
消息来复制完成块。事件对象未实现copy
,您将获得NSInvalidArgumentException
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句