首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过编程为一组UIButtons设置单独背景图像

如何通过编程为一组UIButtons设置单独背景图像
EN

Stack Overflow用户
提问于 2012-06-16 14:27:43
回答 5查看 1.3K关注 0票数 7

下面是我以编程方式创建按钮的一段代码:

代码语言:javascript
运行
复制
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, 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;

但是在运行它的时候,我无法进入模拟器,它抛出了一个信号Sigabart错误。有人能帮上忙吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-16 19:48:40

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

//定义策略

代码语言:javascript
运行
复制
@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"],
                          [UIImage imageNamed:@"Cover_1.png"],
                          [UIImage imageNamed:@"Cover_2.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, 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;
}
票数 7
EN

Stack Overflow用户

发布于 2012-06-16 14:35:29

不能将图像数组设置为UIButton图像属性。如果您查看UIButton的文档,您会发现它需要一个UIImage

票数 2
EN

Stack Overflow用户

发布于 2012-06-16 14:55:12

你代码中的索引是什么??设置以下内容:

代码语言:javascript
运行
复制
[button setBackgroundImage:[buttonImage objectAtIndex:index] forState:UIControlStateNormal];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11061362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档