Как изменить изображение, установленное на кнопке

#iphone #ios #ipad

#iPhone #iOS #iPad

Вопрос:

Я хочу изменить изображение кнопки при событии нажатия кнопок. Вот что я пытаюсь.

 -(IBAction)editObjectImage:(id)sender
{
    if (editButtonState == NO)
    {   
        [editButton setImage:nil forState:UIControlStateNormal];
        [editButton setImage:[UIImage imageNamed:@"done2.png"] forState:UIControlStateNormal];
    }
    else
    {
        [editButton setImage:nil forState:UIControlStateNormal];
        [editButton setImage:[UIImage imageNamed:@"edit.png"] forState:UIControlStateNormal];
    }
}
  

Но изображение моей кнопки не меняется. Что не так с кодом?

Комментарии:

1. Убедитесь, что имя файла, переданное функции imageNamed, правильное!

Ответ №1:

Я думаю, вы не собираетесь меняться editButtonState . Ваш код может быть сокращен до.

 -(IBAction)editObjectImage:(id)sender
{
    UIButton *theButton = (UIButton*)sender;
    if (editButtonState == NO) {   
        [theButton setImage:[UIImage imageNamed:@"done2.png"] forState:UIControlStateNormal];
    } else {
        [theButton setImage:[UIImage imageNamed:@"edit.png"] forState:UIControlStateNormal];
    }

    editButtonState = !editButtonState;
}
  

Комментарии:

1. Вы подключили розетку?

2. ДА. Потому что он выполняет другую работу, но изображение кнопки не меняется.

3. Другая работа? Вы имеете в виду действие? или обновить другие свойства кнопки?

4. при нажатии кнопки редактирования будут выполнены два действия. 1.) Отредактируйте изменение изображения кнопки. 2.) вызов функции (он работает должным образом).

5. Вероятно, вы подключили только действие, а не розетку. И то, и другое — разные вещи. Я отредактировал свой код. Посмотрим, работает ли это сейчас.

Ответ №2:

Это мой рабочий код:

 NSString *shoppingListButtonImageName = @"notepad-selected";

UIImage *slImage = [UIImage imageNamed:shoppingListButtonImageName];
//put a breakpoint here to check that slImage is not nil.

[self.shoppingListButton setImage:slImage forState:UIControlStateNormal];
  

Ответ №3:

При нажатии кнопки вы должны установить изображение следующим образом;

 [editButton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateHighlighted];
  

Комментарии:

1. я тоже пробовал это. но это не сработает, тогда я использую UIControlStateNormal

Ответ №4:

Проверьте, правильно ли добавлены изображения (ваш [UIImage imageNamed:@»»]) не возвращает nil ? , в противном случае он должен работать должным образом.