2016-09-30 67 views
-1

我想使用一个类的方法来实例化一个UIButton的基础上,我通过,以及添加一个行动处理器,这样的有效载荷:如何调用addTarget:action:forControlEvents:从类方法?

+ (void)instantiate: (UIButton *)button with:(NSDictionary *)payload { 
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    button.title = payload.title; 
} 

通常我不会有问题如果instantiate:with:方法是一种普通的方法,但我不知道如何在这种情况下执行buttonClicked:方法。

它应该是一个类方法吗?它应该是一个实例方法吗?另外如果我需要将其设置为类方法,那么如何在addTarget:action:forControlEvents:调用中指定@selector

+0

您在类方法中没有自我访问权限。 – Lubakis

+0

你的情况应该是什么?按钮本身?那是什么课程?这个班的单身人士? – Larme

+0

@Lubakis当然,你在类方法中使用时会自引用实际的类。 – rmaddy

回答

0

在这种情况下,人们可能会争论是否使用类方法或实例方法更好,但我只会回答编码问题。

如果需要,可以使用类方法。您的instantiate:with:方法的实施情况良好。只需添加buttonClicked:方法即可。它需要是类方法:

+ (void)buttonClicked:(UIButton *)button { 
    // do stuff 
} 
+0

将自己添加为目标可以吗? (例如,而不是self.class) – Vlad

+0

'self'是类方法中的类。所以是的,只是使用'self'作为目标是正确的。 – rmaddy