Ios 从外部类添加目标
我面临这个问题:我想为按钮创建的运行时分配一个操作,我正在使用这个自定义类:Ios 从外部类添加目标,ios,swift,Ios,Swift,我面临这个问题:我想为按钮创建的运行时分配一个操作,我正在使用这个自定义类: import UIKit class SubViewManager: NSObject { var button = UIButton() 然后我可以在视图中添加按钮: frame.addSubview(button) 以及分配操作的功能: func setButtonAction(sender: UIButton!, buttonAction: Selector) { button.addTarget(
import UIKit
class SubViewManager: NSObject {
var button = UIButton()
然后我可以在视图中添加按钮:
frame.addSubview(button)
以及分配操作的功能:
func setButtonAction(sender: UIButton!, buttonAction: Selector) {
button.addTarget(self, action: buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
}
现在在ViewController类中,我调用SubViewManager对象,如下所示:
var newSubView:SubViewManager!
然后在我正在做的一个过程中:
newSubView.addButton(...//Dimension and details//...)
newSubView.setButtonAction(newSubView.button, buttonAction: "save")
这里我有一个问题,控制台中出现了这个错误:
已将无法识别的选择器发送到实例0x7f92f9694140
我做错了什么
EDIT:我注意到,如果我在调用.setButtoAction
的函数中直接初始化对象,它可以工作,但我不能在同一个函数中声明,因为我需要在多个函数中使用它
重新编辑:当我执行
.addTarget
方法时,我想运行ViewController类的过程,但它运行的子ViewManager过程不存在,这就是错误的原因,但是我不知道在外部类中调用.addTarget
时如何运行ViewController类过程。它会崩溃,因为在代码中,您设置用于处理按钮操作事件的目标是SubViewManager实例(“self”在SetButtoAction方法中)
但实现save函数的实际对象是ViewController类
您可以尝试修改setButtoAction方法的参数,以传递将实现按钮操作的目标,而不是未使用的sender:UIButton因为您已经调用了addButton方法,并且已经有了指向它的button属性。
试试这样的
func setButtonAction(target: AnyObject! , buttonAction: Selector) {
button.addTarget(target, action: buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
}
然后在调用SetButtoAction方法时传入viewController
newSubView.setButtonAction(self, buttonAction: "save")
其中,self
是实现保存功能的ViewController类的实例。它会崩溃,因为在代码中,您设置用于处理按钮操作事件的目标是SubViewManager实例(“self”在SetButtoAction方法中)
但实现save函数的实际对象是ViewController类
您可以尝试修改setButtoAction方法的参数,以传递将实现按钮操作的目标,而不是未使用的sender:UIButton因为您已经调用了addButton方法,并且已经有了指向它的button属性。
试试这样的
func setButtonAction(target: AnyObject! , buttonAction: Selector) {
button.addTarget(target, action: buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
}
然后在调用SetButtoAction方法时传入viewController
newSubView.setButtonAction(self, buttonAction: "save")
其中self
是实现save函数的ViewController类的实例。您的save()
函数在哪里?在ViewController类中,它是private
吗?还是有什么论据?请使用函数签名更新OP。我更新答案,阅读编辑,并告诉我是否需要更多信息。ViewController Classis中的private
函数是什么?还是有什么论据?请用函数签名更新OP。我更新答案,请阅读编辑并告诉我是否需要更多信息