应用程序有一个屏幕,在给出输入后,我点击OK按钮,它应该执行输入验证,如果可以,然后通过protocol/delegate导航并将数据传回前一个屏幕,否则,将阻止导航并显示警告弹出窗口。
这是我的视图加载:
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: "pushView:", forControlEvents: .TouchUpInside)
}
这是pushView()函数:
func pushView() {
//some codes to validate data and perform navigation
}
当我在模拟器中运行应用程序时,当我点击按钮时它会崩溃,这是错误消息:
2016-04-21 00:12:39.976 ToDo List[1795:1253192] -
[ToDo_List.AddReminderController pushView:]:
unrecognized selector sent to instance 0x7fa13ac16c40
2016-04-21 00:12:39.981 ToDo List[1795:1253192]
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-
[ToDo_List.AddReminderController pushView:]:
unrecognized selector sent to instance 0x7fa13ac16c40'
发件人或选择器可能有问题,但我不知道它的确切含义。
最佳答案
当您在选择器/操作名称中添加一个:
时,如下所示:button.addTarget(self, action: "pushView:", forControlEvents: .TouchUpInside)
这意味着选择器需要一个参数。
另一方面,您的pushView()
函数不包含任何参数,因此对于iOS/UIKit,您引用的是两个不同的东西。
解决办法是:
从:
中删除action
,如下所示:button.addTarget(self, action: "pushView", forControlEvents: .TouchUpInside)
或者在pushView()
函数中添加一个参数,如下所示:func pushView(sender: AnyObject)
关于ios - NSInvalidArgumentException与按钮点击检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36747700/