2010-12-28 2 views
0

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

- (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 в ячейке, но он не изменяется, когда возвращается от детали Посмотреть. Только когда ячейка прокручивается с экрана и воссоздается, отражается изменение. Как я могу заставить перерисовать кнопку, когда я перейду к подробному представлению?

+0

Вы пробовали 'setNeedsDisplay' вместо' setNeedsLayout'? –

+0

Да, и оба, похоже, не работают. Предполагаю, что я называю это сам UIButton? –

ответ

1

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

+0

Это похоже на трюк! –

1

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

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

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

+0

Это имеет смысл, хотя, похоже, это работает для меня с вышеупомянутым решением. Я мог бы оставить его, если это не даст осложнений в будущем, поскольку это соответствует моей цели. –

Смежные вопросы