2012-07-05 6 views
0

Я использую этот код для отображения изображений в виде прокрутки ... Эти кнопки создаются с помощью цикла for ... и затем устанавливают изображение для каждой кнопки ... Теперь я хочу для выбора нескольких изображений ... Я хочу, чтобы, когда я нажимаю на определенной кнопке, ее образ заменить «тик изображения», и когда я снова нажал на него, заменить исходное изображение означает показ непроверенную ..Как изменить изображение кнопки

for(int i=0; i<[imageArray count]; i++) 
{ 
    if((i%4) == 0 && i!=0) 
    { 
     horizontal = 8.0; 
     vertical = vertical + 70.0 + 8.0; 
    } 

    buttonImage = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [buttonImage setFrame:CGRectMake(horizontal, vertical, 70.0, 70.0)]; 
    [buttonImage setTag:i]; 
    [buttonImage setImage:[arrayOfImages objectAtIndex:i] forState:UIControlStateNormal]; 
    [buttonImage addTarget:self action:@selector(buttonImagePressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [myScrollView addSubview:buttonImage]; 

    horizontal = horizontal + 70.0 + 8.0; 
} 

Я попытался этот код для изображения изменен при изменении состояния в (метод buttonImagePressed) ...

[buttonImage setImage:[UIImage imageNamed:@"Checkmark.png"] forState:UIControlStateSelected]; 

но он делает esn't work ... и он меняет только изображение последней кнопки каждый раз, а не нажимает кнопку ... Я также пытался скрыть кнопку, но она снова скрывает только последнюю кнопку. где я делаю неправильно ???

есть ли другой способ его изменить ??? пожалуйста, помогите мне

+0

Я думаю, что здесь проще использовать представление таблицы и изменить индикатор раскрытия. – Garoal

+0

, но я использую четыре изображения в одном ряду ... и это невозможно с индикатором раскрытия ..... – Rox

+0

Да, это правда. – Garoal

ответ

4

Вместо UIControlStateSelected вы должны использовать UIControlStateNormal и сохранить некоторое булево значение, которое показывает, является ли выбранная ранее эта кнопка или нет, вы можете установить выбранный свойство кнопки истина или ложь в зависимости от выбора говорят:

-(void) buttonImagePressed:(UIButton*)sender 
{ 
    UIButton *button = sender; 
    if(button.selected) //already selected so now it should be deselected 
    { 
    [button setImage:[UIImage imageNamed:@"UnCheckmark.png"] forState:UIControlStateNormal]; 
     button.selected = false; 
    } 
    else 
    { 
     [button setImage:[UIImage imageNamed:@"Checkmark.png"] forState:UIControlStateNormal]; 
     button.selected = true; 
    } 

} 
+0

должен ли он работать для каждой конкретной кнопки ??????? – Rox

+0

Да, это сработает, потому что для каждой кнопки выбрано свойство, которое будет определять, было ли оно выбрано или нет. –

+0

Да, его работа ..... отличная ...... – Rox

1

Для этого возьмите глобальную переменную флага, как BOOL Flag = NO;

Установите тег для каждой кнопки.

В методе

-(IBAction)buttonImagePressed:(UIButton *)sender{ 
if(flag==NO){ 
    flag=YES; 
    [sender setImage:[UIImage imageNamed:@"Checkmark.png"] forState:UIControlStateNormal]; 
    } 
else{ 
flag=NO; 
[sender setImage:[arrayOfImages objectAtIndex:sender.tag] forState:UIControlStateNormal]; 
} 
} 
+0

да ... его работающая идеальная ... спасибо больше за помощь ..... – Rox

Смежные вопросы