按钮@selector如果在NSObject中定义按钮则不起作用

Bec*_*chD 1 xcode objective-c uibutton nsobject ios

我有以下问题:我试图在NSObject中定义一个按钮(在一个单独的文件中)并将其添加到我的ViewController:

NSObject方法:

在obj.h中:

+(void)NewButtonInView:(UIView *)view withAction:(SEL)actionbutton;
Run Code Online (Sandbox Code Playgroud)

在obj.m

+(void)NewButtonInView:(UIView *)view withAction:(SEL)actionbutton {

 UIButton *button = [[UIButton alloc] init];
 button.frame = CGRectMake(0, 0, 50, 50);
 [button addTarget:self action:actionbutton forControlEvents:UIControlEventTouchUpInside];
}
Run Code Online (Sandbox Code Playgroud)

在我的ViewCotroller中我导入了obj.h并且:

[obj NewButtonInView:[self view] withAction:@selector(actionB:)];
Run Code Online (Sandbox Code Playgroud)

和:

-(void)actionB:(UIButton *)button {
 //some code
}
Run Code Online (Sandbox Code Playgroud)

按钮看起来很好,但当我点击它时,我收到以下错误:"[obj actionB:]:无法识别的选择器发送到类"

任何帮助表示赞赏.谢谢.

Ben*_*ous 5

问题是这一行

[button addTarget:self action:actionbutton forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

具体来说,使用self.你把actionB:方法放在viewController中,但因为该NewButtonInView:withAction:方法是在一个类的方法中obj自我引用的类obj.要修复它,请将视图控制器中的参数作为此方法的参数传递

+(void)NewButtonInView:(UIView *)view withAction:(SEL)actionbutton target: (id) target {

UIButton *button = [[UIButton alloc] init];
button.frame = CGRectMake(0, 0, 50, 50);
[button addTarget: target action:actionbutton forControlEvents:UIControlEventTouchUpInside];
}
Run Code Online (Sandbox Code Playgroud)