我正在尝试生成一个可以创建UIButton的类,并在按钮所在的任何视图中按下按钮时会发生什么。这就是我正在做的事情:
标题文件:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface CreateButton : NSObject
- (UIButton *)createButton;
@end
实现:
#import "CreateButton.h"
@implementation CreateButton
- (UIButton *)createButton
{
// Instanciate the class
CreateButton *classInstance = [[CreateButton alloc] init];
UIButton *testButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 50.0)];
[testButton setBackgroundColor:[UIColor redColor]];
[testButton addTarget:classInstance action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
return testButton;
}
- (void)buttonClicked:(UIButton *)sender
{
NSLog(@"Clicked");
}
@end
最后,在视图控制器中,我初始化类并获取按钮:
CreateButton *create = [[CreateButton alloc] init];
UIButton *testButton = [create createButton];
[self.view addSubview:testButton];
现在一切正常,我可以看到按钮,但是,当我点击它时没有任何反应。令人惊讶的是,如果我将buttonClicked:
方法移动到我的视图控制器,它就可以正常工作。我需要保持NSObject内的所有按钮接线。任何帮助将不胜感激。
答案 0 :(得分:0)
好的,我解决了这个问题,很有趣。
实施文件将被修改为:
- (UIButton *)createButton
{
UIButton *testButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 50.0)];
[testButton setBackgroundColor:[UIColor redColor]];
[testButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
return testButton;
}
然后,在视图控制器中,必须在头文件CreateButton
部分中预定义@interface
类。然后在实施中:
create = [[CreateButton alloc] init];
它有效!如果你向我解释这一点,那将是很好的。