2015-11-20 1 views
1

UITableViewCellapparentlycallssetHighlighted: и setSelected: на право подвидов (UIImageView, UILabel и т.д.), когда он получает выбран. Скажем, у меня есть пользовательский подкласс UIView, который у меня есть в ячейке, и я хочу, чтобы он получал те же вызовы. Я реализовал setHighlighted: и setSelected:, но звонок не приходит. Есть ли какой-то интерфейс, с которым я должен заявить соответствие? Или мне придется использовать пользовательский подкласс UITableViewCell, переопределить setSelected: и самостоятельно пройти через мои подзаголовки?Как я могу заставить UITableViewCell вызывать setHighlighted или setSelected в пользовательском подклассе UIView?

Кажется странным, что они просто не будут ходить в подзонах и спросить каждого, если он отвечает на setSelected: и/или setHighlighted:.

ответ

0

Создайте подкласс UITableViewCell (если вы используете раскадровки, добавьте свой пользовательский номер UIView и добавьте @IBOutlet). Override setSelected в вашем подклассе UITableViewCell:

class CustomTableViewCell: UITableViewCell { 

    @IBOutlet weak var customView: CustomView! 

    //Other methods and properties 


     override func setSelected(selected: Bool, animated: Bool) { 
      super.setSelected(selected, animated: animated) 
      customView.setSelected(selected) 
     } 
} 
+0

Я надеюсь, что вам не придется явно говорить о ячейке со специальными подзаголовками. Моя цель - заставить ячейку обрабатывать свой пользовательский вид так же, как и любой другой выбираемый subview. –

+0

ОК, я думаю, что ваш единственный шанс установить явно: 'cell.selectionStyle = .Gray'. Или любой другой selectStyle. – zuziaka

0

Глядя на Source Code помог. После некоторых проб и ошибок вам необходимо включить следующие части:

@property (assign,getter=isHighlighted,nonatomic) BOOL highlighted; 

- (void)setHighlighted:(BOOL)highlighted ; 
- (BOOL)isHighlighted; 

После добавления мой пользовательский UIView получил выделенные ячейкой события.

Удачи!

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