2013-12-01 5 views
7

У меня есть пользовательский UiTablleviewCell с некоторыми изображениями и ярлыками, и я хотел бы иметь повернутую метку в ячейке tableview ... поэтому я хотел бы отредактировать метод initWithStyle, но кажется, что он никогда не вызывался.Пользовательская инициализация UITableVIewCell не называется

- (id)initWithStyle:(UITableViewCellStyle)stylereuseIdentifier:(NSString*)reuseIdentifier{ 
NSLog(@"creating cell"); 
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) 
{ 
} 
return self;} 

но в моем журнале я не могу видеть это сообщение. В Tableview у меня есть стандартный метод cellForRow

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    static NSString *simpleTableIdentifier = @"messagesCell"; 
    TBCellMessagesCell *cell = (TBCellMessagesCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    // smt stuff 

    return cell; 
} 

так мне интересно, как же TableView ИНИЦИАЛИЗИРУЙТЕ tableviewcells, я могу думать о каких-то обходные пути, но я хотел бы иметь его в чистоте. Спасибо.

ответ

14

Если ячейки получены из файла раскадровки или файла nib, то initWithStyle:reuseIdentifier не вызывается, вместо него вызывается initWithCoder:.

Вот типичная реализация перезаписаны initWithCoder::

-(id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     // Do your custom initialization here 
    } 
    return self; 
} 

не будет работать, если вам нужно получить доступ к IBOutlet во время пользовательской инициализации.

+0

Спасибо, это ответ, я искал. – beretis

+1

Если доступ к IBOutlets не работает в рамках этого метода, то что лучше всего подходит для кода, связанного с UI, который должен выполняться во время инициализации? –

+1

@Julian лучше использовать 'awakeFromNib' как @VinceBurn, упомянутый ниже, если вы используете IBOutlets. Я использую его и вижу увеличение производительности – pechar

8

Вы также можете рассмотреть метод awakeFromNib, если вам нужно поговорить с IBOutlet.

Обсуждение
Пера заряжание инфраструктура посылает сообщение awakeFromNib каждого объект воссоздан из архива бобов, но только после того, как были загружены и инициализированы все объекты в архиве. Когда объект получает сообщение awakeFromNib, гарантировано, что все его соединения для выхода и действия уже установлены.

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