I try to create simple button, with handler of it's event in another class. So i write something like that:
var handler = Handler()
var btn = UIButton(...)
...
btn.addTarget(handler, "onClick", UIControlEvents.TouchDown)
view.addSubview(btn)
And i declare class Handler:
class Handler : UIViewController {
func onClick() {
NSLog("Success!")
}
}
But when i click on button, my program crash with some error, and highlight this standard, auto-generated code:
class AppDelegate: UIResponder, UIApplicationDelegate { ----- Thread 1: EXC_BAD_ACCESS(code=2, address=0xc)
So can somebody explain how to use handler for button's events, from another than self
class?
UPD: It cause same error even if i use next way:
class Handler : UIViewController {
func addButton() -> UIButton {
*initialize button*
btn.addTarget(self, "onClick", .TouchDown)
return btn
}
func onClick() { NSLog("Success") }
}
....
view.addSubview(Handler().addButton())
Solution: The reason was in creating class for target. I create it in viewDidLoad()
for my example, and when method finish his execution, object was deleted.
It needs to create that target object in more general context, like class field or smth.