Можно сбросить фоновое изображение UIButton? - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть приложение, в котором я изначально установил фоновое изображение UIButton, а затем мне нужно изменить его на другое.Я понимаю, что могу просто удалить исходную кнопку и назначить новую кнопку с новым изображением, но я бы предпочел быть более эффективным и повторно использовать объект, который я уже выделил.Возможно ли это сделать?Я заметил, что свойство currentBackgroundImage доступно только для чтения, поэтому, когда я пробую что-то вроде:

        [thumbnailButton setBackgroundImage:nil forState:UIControlStateNormal];
        [thumbnailButton setBackgroundImage:[UIImage imageWithCGImage:[[photos objectAtIndex: currentPhotoIndex] thumbnail]] forState:UIControlStateNormal];

или просто:

        [thumbnailButton setBackgroundImage:[UIImage imageWithCGImage:[[photos objectAtIndex: currentPhotoIndex] thumbnail]] forState:UIControlStateNormal];

, я получаю следующее:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellContentView setBackgroundImage:forState:]: unrecognized selector sent to instance 0x16c570'

Можно ли использовать UIButton или мне просто нужно удалить исходную кнопку и создать новую?

Ответы [ 3 ]

4 голосов
/ 10 февраля 2012

У вас есть проблема с управлением памятью.

* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [UITableViewCellContentView setBackgroundImage: forState:]: unrecognizedселектор отправлен на экземпляр 0x16c570 '

Это означает, что ваш thumbnailButton указывает не на UIButton, а на UITableViewCellContentView.Это может произойти из-за неправильного присваивания или если UIButton освобождается (в этом случае у вас есть свисающий указатель).Запустите анализатор и дважды проверьте использование кнопки.

UIButton buttonWithType возвращает автоматически выпущенный экземпляр, поэтому его необходимо сохранить.

2 голосов
/ 10 февраля 2012

В справочнике по классу UIButton вы можете прочитать, что можно использовать метод setBackground:forState:.

1 голос
/ 10 февраля 2012

Это должно работать нормально. Я думаю, что кнопка должна быть пользовательской кнопкой.

UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...