应用程序有一个屏幕,在给出输入后,我点击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/

10-11 04:37