Невозможно изменить изображение UIButton внутри UITableViewCell - PullRequest
0 голосов
/ 18 мая 2018

У меня есть пользовательский UITableViewCell, созданный в xib, и я назначил ему собственный файл класса.Я назначил фоновое изображение для UIButton внутри этой пользовательской ячейки в IB.В моем ViewController, где у меня есть UITableView, который использует эту ячейку, у меня есть следующий код:

 _yesNoCell = (YesNoCell *)[tableView dequeueReusableCellWithIdentifier:@"YesNoCell"];

 // Below code is not working    
 [_yesNoCell.btnYes setImage:[UIImage imageNamed:@"action_selected"] forState: UIControlStateHighlighted];

 [_yesNoCell.btnYes addTarget:self action:@selector(btnYesTap:) forControlEvents:UIControlEventTouchUpInside];

Все работает нормально, и метод btnYesTap вызывается, как и ожидалось.Фоновое изображение, установленное в IB, отображается, однако, я хочу установить другое изображение, когда кнопка нажата (не отпущена), т.е. UIControlStateHighlighted.Код выше не работает.

Я даже пытался добавить к кнопке действие как:

 [_yesNoCell.btnYes addTarget:self action:@selector(changeImage:) forControlEvents:UIControlEventTouchDown];

И изменить изображение в методе changeImage, но это не сработало.

Я ссылался на подобные посты на SO, но, похоже, ни у одного из них нет решения.Ссылки по теме: Один Два Три

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы можете сделать это, используя UIControlStateSelected | UIControlStateHighlighted

[_yesNoCell.btnYes setImage:[UIImage imageNamed:@"action_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];
0 голосов
/ 18 мая 2018

На самом деле вы устанавливаете изображение кнопки в выделенном состоянии, но ваша кнопка находится в нормальном (по умолчанию) состоянии.Поэтому измените состояние кнопки, как показано ниже.

Swift 4

    let myImg = UIImage(named: "your-img-name") // your image
    myButton.setImage(myImg, for: .highlighted) // set button image for state
    myButton.isHighlighted = true // change button state

Objective-C

UIImage *myImg = [UIImage imageNamed:@"your-img-name"];
[myButton setImage:myImg forState:UIControlStateHighlighted];
[myButton setHighlighted:true];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...