ios iphone uibutton programmatically-created

ios - Cómo establecer la imagen de fondo individual para el grupo de UIButtons programáticamente



iphone programmatically-created (5)

¿Cuál es el índice en tu código? Establecer esto:

[button setBackgroundImage:[buttonImage objectAtIndex:index] forState:UIControlStateNormal];

Aquí está mi pedazo de código que crea botones programáticamente:

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;

Pero mientras lo ejecuto no puedo entrar en el simulador y está arrojando un error Signal Sigabart. ¿Alguien puede ayudar?


Modifique el código de la siguiente manera para establecer la primera imagen en el botón / puede usar for loop para crear y establecer imágenes en 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, 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:(UIImage*)[buttonImage objectAtIndex:1] forState:UIControlStateNormal]; [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; return button;

cambiar línea

[button setImage:(UIImage*)[buttonImage objectAtIndex:1] forState:UIControlStateNormal];

Esto configurará la imagen en el botón. Has enviado una matriz para configurar la imagen para que la aplicación falle


No puede establecer una matriz de imágenes en la propiedad de imagen UIButton . Si miras la documentación de UIButton , ves que espera un UIImage .


Para crear botones programáticamente utilizando una matriz de selectores, puede usar este fragmento de código:

// definir estrategia

@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; }


Pruebe: [button setImage: [buttonImage objectAtIndex: index] forState: UIControlStateNormal];