UIButton покрывается при выборе UITableViewCell - PullRequest
2 голосов
/ 16 января 2012

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

enter image description here

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

enter image description here

вот реализация ячеек,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];    
UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom]retain];

//set the background of the cells
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"cellBackground.png"]];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellselected2.png"]];

// set the button content
[button setImage:[UIImage imageNamed:@"star.png" ] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"starSelected.png"] forState:UIControlStateSelected];
[button addTarget:self action:@selector(selectedButton:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(280, 10,  24, 24)];

[cell addSubview:button];

return cell;
}

также, когда я нажимаю кнопку, когда ячейка выбрана, кнопка полностью исчезает!

Спасибо

Ответы [ 3 ]

6 голосов
/ 18 января 2012

Я понял, в чем проблема.Проблема в том, что при выборе ячейки UIB-кнопка в ячейке переходит в свое «подсвеченное состояние».Если для выделенного состояния кнопки не назначено изображение, оно будет выглядеть так же, как и в моем случае.

Так что я просто исправил это, добавив изображение, которое я хотел бы использовать в подсвеченном состоянии UIButton,

[button setImage:[UIImage imageNamed:@"starSelected.png"] forState:UIControlStateHighlighted];

Надеюсь, это поможет другим людям, которые сталкиваются с той же проблемой:)

1 голос
/ 04 июля 2012

Вы, конечно, можете установить изображение для выделенного состояния. Другой вариант, если вы хотите использовать одно и то же изображение для UIControlStateNormal и UIControlStateHighlighted, вы также можете сказать, button.adjustsImageWhenHighlighted = NO, по умолчанию YES.

1 голос
/ 16 января 2012

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

UITableViewCell добавляет значение этого свойства в качестве подпредставления, только когда ячейка выбрана.Он добавляет выбранный фоновый вид как подпредставление непосредственно над фоновым представлением (backgroundView), если оно не равно нулю, или за всеми другими представлениями.В то время как UITableViewCell добавляет фоновое представление как подпредставление позади всех других представлений и использует его текущее местоположение кадра.

замените

[cell addSubview:favButton];

на

[cell.contentView addSubview:favButton];

И это должнорешить ее.

Представление содержимого объекта UITableViewCell является суперпредставлением по умолчанию для содержимого, отображаемого ячейкой.Если вы хотите настроить ячейки, просто добавив дополнительные представления, вы должны добавить их в представление содержимого, чтобы они располагались надлежащим образом при переходе ячейки в режим редактирования и из него.

Это все в AppleDocs ^^

Ссылка: http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html

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