#iphone #image #background #uibutton
#iPhone #изображение #фон #uibutton
Вопрос:
Я создал кнопки динамически, и теперь я хочу установить фон для определенного индекса кнопок.
Вот мой пример фрагмента:
В файле интерфейса:
UIButton *answerBtn;
@property (nonatomic, retain) UIButton *answerBtn;
for(int i = 0; i < [myArray count]; i ) {
answerBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[answerBtn setFrame:CGRectMake(30, x, 260, 40)];
answerBtn.tag = i;
[answerBtn setTitle:[answerList objectAtIndex:i] forState:UIControlStateNormal];
[self.view addSubview: answerBtn];
}
В моем случае я хочу установить фон кнопки разными способами.
-(void) custom Method
{
if(indexValue == correctIndex) // Values are 2
{
// so I want to set the background image for the second button
[answerBtn setBackgroundImage:[UIImage imageNamed:@"selected_correct_answer.png"] forState:UIControlStateNormal];
}
}
Но он не устанавливает соответствующий индекс, так как я могу это сделать?
Ответ №1:
Попробуйте это
for(int i = 0 ; i < [myArray count] ; i )
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTag:i];
[btn setFrame:CGRectMake(30, x, 260, 40)];
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
- (IBAction) btnClicked::(id)sender
{
UIButton *btnTapped=(UIButton *)sender;
for(UIView *btn in self.view.subviews)
{
if([btn isKindOfClass:[UIButton class]])
{
UIButton *btnComp = (UIButton*)btn;
if(btnComp.tag == btnTapped.tag)
[btnComp setBackgroundImage:[UIImage imageNamed:@"selected_correct_answer.png" forState:UIControlStateNormal];
else
[btnComp setBackgroundImage:[UIImage imageNamed:@"default_image.png" forState:UIControlStateNormal];
}
}
}
Ответ №2:
Используйте -(void)custom:(id)sender вместо -(void)custom.
В отправителе у вас может быть индекс кнопки.
Ответ №3:
UIButton *answerBtn = (UIButton *)[self objectWihTag:1]