该应用程序有一个屏幕,在给出输入后,我点击OK按钮,它应该执行输入验证,如果正常,然后导航并通过协议/委托将数据传回上一个屏幕,否则,阻止导航和显示警告弹出窗口。
这是我的viewDidLoad:
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'
发件人或选择器可能存在问题,但我不知道它究竟意味着什么。
答案 0 :(得分:0)
修复选择器:
button.addTarget(self, action: "pushView", forControlEvents: .TouchUpInside)
为了将来记住,最新的swift 2.2语法在这方面有一些不同。
button.addTarget(self, action: #selector(MyClass.pushView), forControlEvents: .TouchUpInside)
答案 1 :(得分:0)
当您在选择器/操作名称中添加:
时,就像您在这里一样:
button.addTarget(self, action: "pushView:", forControlEvents: .TouchUpInside)
这意味着你的选择器需要一个参数。
另一方面,pushView()
函数不包含任何参数,因此对于iOS / UIKit,您引用了两个不同的东西。
解决方案是:
:
中移除action
,如此: button.addTarget(self, action: "pushView", forControlEvents: .TouchUpInside)
pushView()
函数添加参数,如下所示: func pushView(sender: AnyObject)