Изменить setHighlighted для UIButton - PullRequest
0 голосов
/ 28 декабря 2010

Я использую UIButton, чтобы показать и переключить элемент ячейки таблицы из прочитанного в непрочитанное. Я использовал синее изображение в качестве фона, чтобы показать, когда элемент не был прочитан, и это сработало, но я подумал, что было бы лучше использовать функцию setHighlighted, поскольку это экономит добавление дополнительного изображения в приложение. Код, который я использую, выглядит следующим образом:

- (void)updateReadButton{
    if(article.read.boolValue){
        //[readButton setBackgroundImage:nil forState:UIControlStateNormal];
        [readButton setHighlighted:FALSE];
        [readButton setNeedsLayout];
    } else {
        [readButton setHighlighted:TRUE];
        [readButton setNeedsLayout];        
    }
}

Это прекрасно работает для первоначального создания ячейки. Но когда по элементу щелкают и отображается подробный вид, я переключаю значение 'read' на 'true' и меняю значение параметра setHighlighted на false для UIButton в ячейке, но оно не изменяется при возврате из детали Посмотреть. Изменение отражается только тогда, когда ячейка прокручивается за пределы экрана и создается заново. Как заставить перерисовать кнопку после перехода к подробному виду?

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

Вы можете выполнить выделение, просто перезагрузив соответствующую ячейку.Взгляните на UITableView - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation и используйте его для перезагрузки ячейки после установки выделения.

1 голос
/ 28 декабря 2010

Я не думаю, что метод setHighlighted: является правильным.Вот документация:

Укажите YES, если элемент управления выделен;в противном случае нет.

По умолчанию элемент управления не выделен.UIControl автоматически устанавливает и очищает это состояние автоматически, когда касание входит и выходит во время отслеживания и когда происходит касание.

...