2013-03-22 2 views
1

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

Outlet connections Custom class set in IB on cell prototype

STRMEpisodeCell.h

#import <UIKit/UIKit.h> 
#import "Show.h" 

@interface STRMEpisodeCell : UITableViewCell 
@property (weak, nonatomic) Show *show; 
@property (weak, nonatomic) IBOutlet UILabel *showLabel; 
@property (weak, nonatomic) IBOutlet UILabel *episodeLabel; 
@property (weak, nonatomic) IBOutlet UIImageView *posterView; 
@end 

STRMEpisodeCell.m

#import "STRMEpisodeCell.h" 

@interface STRMEpisodeCell() 

@end 

@implementation STRMEpisodeCell 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

- (void)setShow:(TVDbShow *)show 
{ 
    _show = show; 
    self.showLabel.text = show.title; 
} 

@end 

STRMViewController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.episodeTable.dataSource = self; 
    [self.episodeTable registerClass:[STRMEpisodeCell class] forCellReuseIdentifier:@"episode"]; 

    self.list = //loading data here; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    STRMEpisodeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"episode"]; 
    cell.show = self.list[indexPath.row]; 
    return cell; 
} 

Когда я установил точку останова на cell.show = self.list[indexPath.item]; в cell, он просто показывает, что все розетки равны нулю.

Я делаю что-то неправильно?

+0

другие скриншоты IB - каков класс верхнего уровня и владелец вашего файла? – QED

+1

Если вы установите эту ячейку в раскадровке, вам не нужно регистрировать класс (и я думаю, что когда я это сделал, он фактически не позволял ему работать правильно, поэтому попробуйте прокомментировать это). Я не уверен, будет ли это иметь значение, но используйте dequeueReusableCellWithIdentifier: forIndexPath: вместо просто dequeueReusableCellWithIdentifier :. – rdelmar

+0

rdelmar: OMG спасибо, это была регистрация класса, спасибо, сэр! Я собираюсь установить его в IB только тогда. Перепишите его в ответ, если хотите, я приму его позже. Кстати, я использую раскадровки. –

ответ

4

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

Если вы создаете ячейку в файле xib и имеете собственный класс, то вы регистрируете nib, а не класс.

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