我正在尝试向我的UIButton添加目标,但在尝试使用嵌套函数作为其操作时会出错。
这是我的代码:
func createAddView() {
let addButton = UIButton()
func remove(sender: UIButton) {
print("Remove")
}
addButton.addTarget(self, action: #selector(remove(sender:)), for: .touchUpInside)
}
它给了我这个警告:
warning: No method declared with Objective-C selector 'remove'.
我需要'删除'功能嵌套在'createAddView'函数中,因为我需要删除和淡出在'createAddView'函数中创建的其他一些UIViews
任何人都知道我该怎么做?
答案 0 :(得分:1)
您无法执行此操作,因为func remove
仅存在于func createAddView
块中。
向#selector()
个UIControl
添加一个func remove
没有任何限制。因此,您可以在类块中声明#selector
,并在每次创建新按钮时将其添加为selection
。
答案 1 :(得分:0)
因为func remove是在createAddView()方法中创建的。
这是固定代码:
func createAddView() {
let view = UIView() //added for testing purposes
view.frame = CGRect(x: 0, y: 0, width: 320 , height: 640) //added for testing purposes
let addButton = UIButton()
addButton.frame = CGRect(x: 0, y: 0, width: 100, height: 50) //added for testing purposes
view.addSubview(addButton)
addButton.addTarget(self, action: #selector(remove(sender:)), for: .touchUpInside)
}
func remove(sender: UIButton) {
UIView.animate(withDuration: 0.3, delay: 0, options: UIViewAnimationOptions.allowUserInteraction, animations: { () -> Void in
print("Add")
}) {(Bool) -> Void in
print("Done")
}
}