UITableView: изменить цвет фона выбранной ячейки

Я не могу изменить белый фон при навигации по UITableView на tvOS.

Я отредактировал цвет фона / текста для всей таблицы в целях дизайна, поэтому выбранный белый фон раздражает.

Я пытался:

cell.selectedBackgroundView.backgroundColor = [UIColor blackColor];

Но он не обновляет выделенный цвет фона.


person Nico AD    schedule 02.10.2015    source источник


Ответы (3)


tvOS использует фокус, чтобы показать текущий выбранный элемент. Чтобы изменить backgroundColor, переопределите метод didUpdateFocusInContext () в своем классе ячейки.

public override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
    context.previouslyFocusedView?.backgroundColor = UIColor.clearColor()
    context.nextFocusedView?.backgroundColor = UIColor.blackColor()
}
person iBapt    schedule 02.10.2015
comment
спасибо, у меня только цель C, а не быстрый и у меня нет класса ячейки. если нет другого решения, я создам подкласс UITableViewCell и переопределю этот метод. - person Nico AD; 02.10.2015
comment
отлично работает с целью C с пользовательским UITableViewCell, спасибо! - person Nico AD; 02.10.2015

Вы можете просто отключить это, используя focusStyle:

self.focusStyle = UITableViewCellFocusStyle.Custom

Это отключит белый фон, но также отключит любую анимацию масштабирования по умолчанию. Вы должны справиться с этим самостоятельно, используя пользовательский UITableViewCellFocusStyle.

person Antoine    schedule 02.11.2015

вам нужно создать UIView и установить его в качестве фона в вашем CellForRowAtIndexPath

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CategoryCell" forIndexPath:indexPath];
    UIView *bgColorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 405, 60)];

    bgColorView.backgroundColor = [UIColor blackColor];
    [cell setSelectedBackgroundView:bgColorView];
person Jenel Ejercito Myers    schedule 23.10.2015