Различные состояния для UIButton не работают - PullRequest
1 голос
/ 01 июня 2011

Я написал этот код для просмотра различных состояний изображения ...

UIButton *btnComment = [UIButton buttonWithType:UIButtonTypeCustom];
btnComment.tag=indexPath.row;
[btnComment addTarget:self action:@selector(goToComment:)forControlEvents:UIControlEventTouchDown];

UIImage *img1 = [UIImage  imageNamed:@"commentbtndown.png"];
UIImage *img2 = [UIImage  imageNamed:@"commentbtnup.png"];
UIImage *img3 = [UIImage  imageNamed:@"commentbtnover.png"];

[btnComment setImage:img1 forState:UIControlStateNormal];
[btnComment setImage:img2 forState:UIControlStateHighlighted];
[btnComment setImage:img3 forState:UIControlStateSelected];
[btnComment setImage:img2 forState:(UIControlStateHighlighted+UIControlStateSelected)];

btnComment.frame            =CGRectMake(0, 100, 95, 25);
[cell addSubview:btnComment];

[img1 release];
[img2 release];
[img3 release];

но он не работает, он всегда показывает мне изображение 1.

p.s. Я добавил эти изображения в ячейку табличного представления

Ответы [ 3 ]

2 голосов
/ 02 июня 2011

Проблема заключается в том, что вы создаете UIImage объекты с помощью метода автоматического выпуска imageNamed, и впоследствии вы освобождаете эти объекты, что приводит к тому, что на вашей кнопке появляются недопустимые объекты и из-за этого изображения не отображаются

Попробуйте удалить эти строки кода, и ваша кнопка будет работать

[img1 release];
[img2 release];
[img3 release];

А также, если вы хотите, чтобы кнопка получала сенсорные события, вам придется добавить ее в contentView вашегообъект ячейки, в противном случае кнопка будет показана, но вы не сможете нажать на нее.

[cell.contentView addSubview:btnComment]
2 голосов
/ 01 июня 2011

Хорошо, одна проблема с вашим кодом состоит в том, что вы должны не освобождать эти переменные изображения.imageNamed: возвращает автоматически выпущенный UIImage.Я сомневаюсь, что это вызывает вашу проблему, однако.

Попробуйте использовать | вместо + для вашего четвертого setImage вызова.

0 голосов
/ 01 июня 2011

Другая проблема с вашим кодом заключается в том, что вы добавляете кнопку в UITableViewCell. Вместо этого:

[cell addSubview:btnComment];

Вы должны добавить подпредставления в ячейку contentView:

[cell.contentView addSubview:btnComment];

Но я также не уверен, что это может вызвать вашу проблему ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...