Почему моя пользовательская ячейка выделяется только тогда, когда пользователь убирает палец? - PullRequest
1 голос
/ 20 апреля 2011

Я создал пользовательский UITableViewCell и установил backgroundView со следующим кодом:

- (void)layoutSubviews
{
    [super layoutSubviews];

    self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NormalImage"]];
    self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"HighlightedImage"]];

    // other layout stuff
}

Это прекрасно работает, за исключением того, что когда пользователь выбирает строку, он не выделяется - он подсвечивается только тогда, когда пользователь отрывает свой палец (поэтому вы кратко видите его выделение перед переходом к следующему виду ). Если я уберу строку self.selectedBackgroundView, чтобы была обычная подсветка синей ячейки iOS, она будет выделена сразу после выбора ячейки.

Почему это?

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Попробуйте этот код в ячейке пользовательской таблицы

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    [super setHighlighted:highlighted animated:animated];
    if (highlighted) {
    self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"HighlightedImage"]];

    } else {
    self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NormalImage"]];

    }
}
0 голосов
/ 20 апреля 2011

Вы можете назначить backgroundView и selectedBackgroundView при инициализации вашей пользовательской ячейки. Согласно документ Apple , selectedBackgroudView используется в качестве фона при выделении ячейки.

Если вы напишите эти коды в - (void) layoutSubviews, когда ячейка выбрана или не выбрана, она вызовет - (void) layoutSubviews. Затем ваш backgroundView и selectedBackgroundview будут повторно назначаться новым экземплярам UIView каждый раз, когда изменяется состояние пользовательской ячейки.

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