我有这段代码:
[myButton addTarget:self action:@selector(doSomething:) forControlEvents:UIControlEventTouchUpInside];
但是因为doSomething包含如此少的代码,我想知道是否可以将代码直接放在这里而不是让它运行doSomething。
我已经尝试过了:
[myButton addTarget:self action:^ { /* code here */ } forControlEvents:UIControlEventTouchUpInside];
但它只是给“不兼容的类型SEL”发送“send(void)^(void)”错误。
有办法做到这一点吗?如果是这样,那么正确的语法是什么?
谢谢!
答案 0 :(得分:5)
好吧,你所有的答案都使用了许多不必要的代码,这些代码已经过时且不再有效。
我自己找到了一个答案,虽然我改编并得到了这个答案:
[myButton addTarget:[^{NSLog(@"Pressed the button");} copy] action:@selector(invoke) forControlEvents:UIControlEventTouchUpInside];
哪种方法正常。
答案 1 :(得分:0)
这似乎是可能的,但对我来说看起来像一个丑陋的黑客。有关解决方案的详细信息,请参阅this blog post。