没有自我目标对象的UIButton

时间:2014-07-08 14:36:48

标签: onclick uibutton swift uicontrolevents

我尝试创建一个简单的按钮,在另一个类中处理它的事件。 所以我写了类似的东西:

var handler = Handler()
var btn = UIButton(...)
...
btn.addTarget(handler, "onClick", UIControlEvents.TouchDown)
view.addSubview(btn)

我宣布班级处理程序:

class Handler : UIViewController {
    func onClick() {
        NSLog("Success!")    
    }
}

但是当我点击按钮时,我的程序崩溃了一些错误,并突出显示这个标准,自动生成的代码:

class AppDelegate:UIResponder,UIApplicationDelegate {-----线程1:EXC_BAD_ACCESS(代码= 2,地址= 0xc)

那么有人可以解释如何使用处理按钮的事件,而不是self类吗?

UPD:即使我使用下一个方式也会导致同样的错误:

class Handler : UIViewController {
    func addButton() -> UIButton {
        *initialize button*
        btn.addTarget(self, "onClick", .TouchDown)
        return btn
    }
    func onClick() { NSLog("Success") }
}
....
view.addSubview(Handler().addButton())

解决方案:原因是为目标创建了类。我在viewDidLoad()为我的例子创建它,当方法完成执行时,对象被删除。 它需要在更一般的上下文中创建该目标对象,如类字段或smth。

0 个答案:

没有答案