我有一个视图控制器,我们称之为“View Controller A”。 我有一个不同的类(从NSObject和.h和.m对派生),让我们称这个类为“B”。 从“B”的功能我使用addSubView在“A”中添加一个按钮。 该按钮已添加,但现在我想将一个事件附加到这个新按钮。 我正在使用
[newButton addTarget:self etc. etc.]
但它不起作用。
我不想在View Controller“A”中声明该事件。 有没有办法摆脱这个?
感谢大家阅读此内容..
答案 0 :(得分:3)
[newButton addTarget:viewControllerA etc. etc.]
编辑:更完整的版本:
[newButton addTarget:viewControllerA action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
这假设B类引用了名为viewControllerA
的视图控制器A.它还假设View Controller A已实现该方法:
- (void)buttonAction:(id)sender;
编辑2:所以这就是你想要的:
[newButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
我假设你已经拥有它,我认为它不起作用的原因是因为你有一个看起来像这样的方法:
+ (void)addButtonToController:(UIViewController *)controller;
这是一种类方法。类方法中没有self
。一种可能的解决方案是使其成为单例类,只需将方法更改为:
- (void)addButtonToController:(UIViewController *)controller;
您可以使用以下方法调用该方法:
[[ClassB sharedInstance] addButtonToController:controller];
如果您不知道如何创建单例类,我可以第三次更新我的答案以包含它。 :)
编辑3:我仍然认为我原来的答案是正确的。您不必在每个控制器中实现- (void)buttonAction:(id)sender;
。您可以使用继承或类别来在每个控制器中访问此方法,而无需为每个控制器实现它。如果您需要帮助,请告诉我。