【发布时间】:2017-06-16 07:56:05
【问题描述】:
class FirstView: UIView {
@IBOutlet weak var lbl1: UILabel!
@IBOutlet weak var lbl1: UILabe2!
@IBOutlet weak var btn1: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
//view setups
}
}
现在在下一堂课中,我试图获取按钮的动作事件,但它总是在说 class 'App. UIViewHelper' 没有实现 methodSignatureForSelector: -- 前面的麻烦 无法识别的选择器 +[App. UIViewHelper NotesClicked:]
class UIViewHelper
{
case 1:
let lowerDetail = FirstView()
lowerDetail.lbl1.text = "Worked"
lowerDetail.lblw.text = "Happy"
lowerDetail.btn1.addTarget(self, action: #selector(NotesClicked), forControlEvents: UIControlEvents.TouchUpInside)
print("Sleep")
break
}
@objc func NotesClicked(sender :UIButton) {
print("Worked")
}
}
当 UIViewHelper 扩展 NSObject 崩溃时说 * 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'+[App.UIViewHelper NotesClicked:]: unrecognized selector sent to class 0x105771a80 '
我很困惑这里发生了什么。有人可以建议吗?
【问题讨论】:
-
能否请您发布
UIViewHelper的完整代码?另外,FirstView有错别字,你能改正吗? -
还有其他功能:)。
-
在您的示例中,
FirstView类上有类似btnSleepTrackerNotesicon的属性。请修复您的代码,使其至少在语法上是正确的。另外,为什么它很有趣,你是从静态函数中调用这个case 1吗? -
有一个静态函数可以调用那个switch case
-
你的类
UIViewHelper必须实现类NSObject