2013-11-12 4 views
1

У меня есть две кнопки в ячейке Prototype в раскадровке. Один для IBAction, а другой для IBOutlet. Затем подкласс UITableViewCell в MyTableViewCell и укажите его в Prototype Cell в раскадровке. Затем я управляю + перетаскиваю кнопку действия в MyTableViewCell для создания IBAction и делаю то же самое для кнопки выхода, чтобы создать IBOutlet.Изменение состояния UIButton в ячейке прототипа в раскадровке

В методе:

-(void)buttonPress:(UIButton *)sender 
    { 
     MyTableViewCell *cell = (MyTableViewCell *)[[sender superview] superview]; 
     cell.outletButton.selected = YES; 
     ... 
    } 

Я получаю сообщение об ошибке:

причина: «- [UITableViewCellScrollView outletButton]: непризнанные селектор направлен например

Что я делаю неправильно? Я пытаюсь сделать две кнопки в Prototype Cell. Когда одна кнопка нажата, другая кнопка может изменить состояние, чтобы отображать фоновые изображения, такие как выбранные или выделенные.

Заранее спасибо.

ответ

0

На iOS6 и раньше ваш код кажется прекрасным, но на iOS 7 вам нужно сделать еще один шаг superview, если вы хотите попасть в ячейку. Так что это будет:

MyTableViewCell *cell = (MyTableViewCell *)[[[sender superview] superview] superview]; 
+0

спасибо. после изменения нет сообщения об ошибке, но состояния все еще нет. Он всегда является нормальным состоянием и не переходит в выбранное состояние. – user2543991

+0

Вы не должны изменять состояние своей кнопки, но установить, например. другое фоновое изображение, если вы хотите настроить внешний вид. Вы можете попробовать свойство 'highlight' (возможно, оно будет работать), но я предпочел бы сделать изменение изображения – Levi

+0

еще раз. Да, я установил другое фоновое изображение для выбранного и выделенного свойства, но при установке cell.button.selected = YES состояние не изменяется. – user2543991

0

Это, как правило, не является хорошей идеей для навигации по иерархии просмотра таким образом, как вы нашли, может быть различие между версиями ОС, которые могут нарушить ваш код.

Если IBAction и IBOutlet оба подключены к классу MyTableViewCell, вы можете просто использовать:

- (void)buttonPress:(UIButton *)sender 
{ 
    self.outletButton.selected = YES; 
    ... 
} 

Вы также хотите реализовать prepareForReuse: в MyTableViewCell остановить свойство кнопок становятся скопирован, когда клетка повторно используется.

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