微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 如何通过编程方式为UIButtons组设置单个背景图像

这是我的一段以编程方式创建按钮的代码
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;

但是在运行它时我无法进入模拟器并且它会抛出一个Signal Sigabart错误.
有人可以帮忙吗?

解决方法

要使用选择器数组以编程方式创建按钮,您可以使用以下代码片段:

//定义策略

@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 举报,一经查实,本站将立刻删除。

相关推荐