Как установить выделенное изображение в ячейке табличного представления? - PullRequest
0 голосов
/ 11 марта 2010

Я следовал коду в AdvancedTableViewCells от Apple и построил табличное представление с фоновым изображением для ячеек. Теперь я хочу изменить его так, чтобы вместо синего цвета подсветки он показывал более темную версию моего изображения. Какие шаги мне нужно выполнить, чтобы сделать это? Я использую подкласс UITableViewCell с пользовательским NIB. Мое фоновое изображение реализовано как cell.backgroundView.

Шаги, которые я предпринял до сих пор:

  • Измените selectionStyle ячейки на «Нет»
  • Установить цвет подсветки для моих UILabel подвидов на светлый цвет
  • Создать более темную версию моего фона как отдельное изображение
  • Переопределить setSelected: animated:

Я задаюсь вопросом о следующих шагах.

Ответы [ 2 ]

0 голосов
/ 12 марта 2010

Я нашел selectedBackgroundView свойство. Я использую этот подход вместо setSelected: animated:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    NSString *backgroundImagePath = [[NSBundle mainBundle] pathForResource:@"TableBackground" ofType:@"png"];
    UIImage *backgroundImage = [UIImage imageWithContentsOfFile:backgroundImagePath];
    self.backgroundView = [[[UIImageView alloc] initWithImage:backgroundImage] autorelease];
    self.backgroundView.frame = self.bounds;

    NSString *selectedBackgroundImagePath = [[NSBundle mainBundle] pathForResource:@"TableBackgroundDark" ofType:@"png"];
    UIImage *selectedBackgroundImage = [UIImage imageWithContentsOfFile:selectedBackgroundImagePath];
    self.selectedBackgroundView = [[[UIImageView alloc] initWithImage:selectedBackgroundImage] autorelease];
    self.selectedBackgroundView.frame = self.bounds;

    return self;
}

Я не уверен, что это правильный путь, так как он привел пару других проблем. Одна вещь состоит в том, что ячейка selectionStyle должна быть чем-то отличным от UITableViewCellSelectionStyleNone, иначе она не покажет фоновое изображение Анимация отмены выбора также перестала работать. Я открою новый вопрос об этих проблемах.

0 голосов
/ 11 марта 2010

Вы пытались заменить изображение внутри setSelected: animated:?

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];
    if (selected) {
        // replace image here
        // or move a pointer from one image to another
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...