我想为每个创建的按钮提出一种不同的方法.
我尝试在viewDidLoad中调用“First Image”方法,但它不起作用.
我尝试在viewDidLoad中调用“First Image”方法,但它不起作用.
我在ViewDidLoad中的选择器有问题.没有识别“FirstImage”,这是一个没有参数的void方法.
ViewController.m
- (void)createFirstButton:(NSString *)myName: (SEL *)myAction{ UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside]; [btn setTitle:myName forState:UIControlStateNormal]; btn.frame = CGRectMake(20,916,120,68); [self.view addSubview:btn]; } - (void)viewDidLoad{ [self createFirstButton:@"First" myAction:[self FirstImage]]; }
我做了什么(我将“CreateFirstButton”更改为“CreateButton”):
ViewControler.m
#import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize myHeight; @synthesize myWidth; @synthesize myX; @synthesize myY; - (void)createButton:(NSString *)myName:(SEL)myAction:(NSUInteger)my_x:(NSUInteger)my_y:(NSUInteger)my_width:(NSUInteger)my_height { UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn addTarget:self action:myAction forControlEvents:UIControlEventTouchUpInside]; [btn setTitle:myName forState:UIControlStateNormal]; btn.frame = CGRectMake(my_x,my_y,my_width,my_height); [self.view addSubview:btn]; } - (void)myXcrementation{ myX = myX + 150; } - (void)viewDidLoad{ myX = 20; myY = 916; myWidth = 120; myHeight = 68; [self createButton:@"First":@selector(FirstImage):myX:myY:myWidth:myHeight]; [self myXcrementation]; [self createButton:@"Previous":@selector(PreviousImage):myX:myY:myWidth:myHeight]; [self myXcrementation]; [self createButton:@"Pause":@selector(PauseImage):myX:myY:myWidth:myHeight]; [self myXcrementation]; [self createButton:@"Next":@selector(NextImage):myX:myY:myWidth:myHeight]; [self myXcrementation]; [self createButton:@"Last":@selector(LastImage):myX:myY:myWidth:myHeight]; } - (void)FirstImage{ current = 0; [self SetImage]; } -(void)SetImage{ [myImageView setImage: [myArray objectAtIndex:(current)]]; } @end
ViewController.h
#import <UIKit/UIKit.h> @interface ViewController : UIViewController{ } @property(assign,nonatomic) NSUInteger myHeight; @property(assign,nonatomic) NSUInteger myWidth; @property(assign,nonatomic) NSUInteger myX; @property(assign,nonatomic) NSUInteger myY; @end
我再次编辑了这个帖子,没有更多的错误.
特别感谢大家.花了我时间了解:)
解决方法
你必须使用@selector,如下所示
[self createFirstButton:@"First" myAction:@selector(FirstImage)];
那么你的签名是错误的,因为SEL不应该是一个指针.
更改
- (void)createFirstButton:(NSString *)myName: (SEL *)myAction{
至
- (void)createFirstButton:(NSString *)myName: (SEL)myAction{
最后,myAction的类型为SEL,因此可以直接将其传递给UIButton方法,如下所示
[btn addTarget:self action:myAction forControlEvents:UIControlEventTouchUpInside];
此外,我想补充说,使用大写字母的方法,这是一个非常糟糕的做法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。