iPhone为不同类别的按钮添加事件

时间:2011-04-05 11:53:02

标签: iphone objective-c

我有一个视图控制器,我们称之为“View Controller A”。 我有一个不同的类(从NSObject和.h和.m对派生),让我们称这个类为“B”。 从“B”的功能我使用addSubView在“A”中添加一个按钮。 该按钮已添加,但现在我想将一个事件附加到这个新按钮。 我正在使用

[newButton addTarget:self etc. etc.]

但它不起作用。

我不想在View Controller“A”中声明该事件。 有没有办法摆脱这个?

感谢大家阅读此内容..

1 个答案:

答案 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;。您可以使用继承或类别来在每个控制器中访问此方法,而无需为每个控制器实现它。如果您需要帮助,请告诉我。