2013-05-08 3 views
0

У меня есть UITableViewCell, а мои ячейки содержат подкласс UIButton (CoolButton). я выбрал код CoolButton из raywenderlich учебника available hereКак создать экземпляр пользовательского UIButton в UITableViewCell

В IB я создал подкласс UITableViewCell и я настроил класс моей кнопки CoolButton и установить тип собственности на таможню и настроил IBOutlet для CoolButton для моего подкласса UITableView.

Моя проблема заключается в создании ячеек, они получают UIButton вместо CoolButton. Как следствие, когда я устанавливаю свойства CoolButton, я получаю сбой с «непризнанным селектором».

Почему UIButton создан вместо CoolButton? Как я могу получить свой CoolButton в таблице?

Thanks,

Séb.

+0

Пожалуйста, разместите свой код, чтобы мы могли понять, в чем проблема. – Amit

ответ

0

Я собираюсь предположить, что вы делаете что-то вроде:

CoolButton *b = [UIButton ...] 

Вам нужно создать его с помощью класса CoolButton:

CoolButton *b = [CoolButton ....]; 

Или, если вы использовали И.Б., что вы создали UIButton, но использовал IBOutlet CoolButton. Вам нужно будет сделать фактический класс кнопки, которую вы перетаскиваете в IB CoolButton, что вы можете сделать, выбрав кнопку и нажав (я думаю) вторую на левую верхнюю вкладку инспектора.

+0

Спасибо за ответ. Я использую IB, но, как объяснил, я сделал фактический класс кнопки CoolButton, а затем перетащил ее в мой подкласс UITableViewCell (он создал свойство с классом CoolButton). К сожалению, он не работает, он все еще создает UIButton вместо CoolButton. – sebastien

+0

Ах, CoolButton может не реализовывать «-initWithCoder», что и используется, когда объект поступает из IB, поэтому, когда IB называет это, он переходит на UIButton's. Добавьте его в класс, и теперь у вас будет CoolButton. Я использовал этот класс несколько лет назад, и теперь я получаю смутное запоминающее устройство, которое мне нужно было сделать. Вы можете поместить любой код, который теперь запускается в initWithFrame, в метод «setup» и вызывать его как из initWithFrame, так и из initWithCoder. Добавьте NSLog в initWithCoder, и если вы не видите это сообщение, вы не получите права класса в IB. –

+0

Я нашел проблему, и я немного похож на идиот ... Проблема в исходном файле Common.m и CoolButton.m не была включена в мой целевой проект (в фазах построения/источниках компиляции). Когда я импортировал эти файлы в свой проект, я просто перетащил файлы исходных файлов, но я забыл их добавить в «Build Phases/Compile Sources». Теперь он работает, и я могу использовать эту «Cool Button» от IB. Я принимаю ответ, потому что это правильный способ создать экземпляр кнопки. Спасибо – sebastien

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