почему метод init пользовательской ячейки таблицы на основе пера не вызывается - PullRequest
7 голосов
/ 04 августа 2011

У меня есть ячейка табличного представления на основе пера, которую я создал в Интерфейсном конструкторе.Я установил класс ячейки табличного представления на FooTableViewCell, который простирается от UITableViewCell.

В FooTableViewCell Я переопределил метод init следующим образом:

-(id)init{

    if ((self = [super init])){
      // My init code here
    }
    return self;
}

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

Я мог бы обойти это, но я хотел бы полностью понять это, и для меня неясно, как объект может жить без initвызываемый метод.

Ответы [ 2 ]

19 голосов
/ 04 августа 2011

При неархивированной инициализации происходит несколько иной путь.

Вместо -(id)init будет вызван -(id)initWithCoder:(NSCoder*)aDecoder. В этот момент розетки не подключены, если вам нужен доступ к розеткам, вы можете переопределить -(void)awakeFromNib, который будет вызываться после подключения объекта.

7 голосов
/ 04 августа 2011

Когда объект загружается из nib-файла, вызывается его метод -awakeFromNib - вы можете поместить туда свой код инициализации:

- (void)awakeFromNib{
   // Init code
}
...