这是我的一段以编程方式创建按钮的代码:
NSArray *buttonImage=[NSArray arrayWithObjects:[UIImage imageNamed:@"Cover_0.png"],[UIImage imageNamed:@"Cover_1.png"],[UIImage imageNamed:@"Cover_2.png"],[UIImage imageNamed:@"Cover_3.png"],[UIImage imageNamed:@"Cover_4.png"],[UIImage imageNamed:@"Cover_5.png"],[UIImage imageNamed:@"Cover_6.png"],[UIImage imageNamed:@"Cover_7.png"],nil]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0,200.0f,200.0f); [button setTitle:[Nsstring stringWithFormat:@"%i",index] forState:UIControlStatenormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStatenormal]; button.titleLabel.font = [button.titleLabel.font fontWithSize:50]; [button setimage:buttonImage forState:UIControlStatenormal]; [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; return button;
解决方法
要使用选择器数组以编程方式创建按钮,您可以使用以下代码片段:
//定义策略
@interface DataItemStrategy : NSObject @property(nonatomic,assign) SEL someSelector; @end @implementation DataItemStrategy @synthesize someSelector = _someSelector; -(id)initWithSelector:(SEL)someSelector { self = [super init]; if (self) { self.someSelector = someSelector; } return self; } @end -(void)createButtons { NSArray *buttonImages =[NSArray arrayWithObjects:[UIImage imageNamed:@"Cover_0.png"],nil]; NSArray *dataStrategies = [NSArray arrayWithObjects: [[[DataItemStrategy alloc] initWithSelector:@selector(buttonAction0:)] autorelease],[[[DataItemStrategy alloc] initWithSelector:@selector(buttonAction1:)] autorelease],[[[DataItemStrategy alloc] initWithSelector:@selector(buttonAction2:)] autorelease],nil]; CGRect buttonFrame = CGRectMake(0,50,50); for (NSInteger i = 0; i < [buttonImages count]; i++) { buttonFrame.origin.y += 50; UIImage *buttonImage = [buttonImages objectAtIndex:i]; DataItemStrategy *dataStrategie = [dataStrategies objectAtIndex:i]; Nsstring *title = [Nsstring stringWithFormat:@"%d",i]; UIButton *button = [self buttonWithFrame:buttonFrame image:buttonImage action:dataStrategie.someSelector title:title]; [self.view addSubview:button]; } } -(UIButton *)buttonWithFrame:(CGRect)buttonFrame image:(UIImage *)buttonImage action:(SEL)buttonAction title:(Nsstring *)title { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = buttonFrame; [button setTitle:title forState:UIControlStatenormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStatenormal]; button.titleLabel.font = [button.titleLabel.font fontWithSize:50]; [button setimage:buttonImage forState:UIControlStatenormal]; [button addTarget:self action:buttonAction forControlEvents:UIControlEventTouchUpInside]; return button; }
原文地址:https://www.jb51.cc/iOS/332304.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。