2014-02-09 3 views
0

У меня есть исходный код, который не использует раскадровку или xib. Он содержит UITableView, а ячейки используют стандартный cell.textlabel.Пользовательский TableViewCell программно

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

У меня после UITableViewClass

@interface chatCell : UITableViewCell 
@property(nonatomic, weak) IBOutlet UIImageView *homeTeamImage; 
@property(nonatomic, weak) IBOutlet UILabel *homeTeamLabel; 
@property(nonatomic, weak) IBOutlet UIImageView *awayTeamImage; 
@property(nonatomic, weak) IBOutlet UILabel *awayTeamLabel; 
@end 

Как я поместить их внутрь TableViewCell и подключить их к свойствам?

так что я могу начать использовать

cell.homeTeamImage 
cell.homeTeamLabel 
cell.awayTeamImage 
cell.awayTeamLabel 
+0

Здесь вы можете найти учебник http://code.tutsplus.com/tutorials/customizing-uitableview-cell--mobile-15702 – alessio271288

+0

Это учебное пособие с использованием раскадровки. – user3258468

ответ

1

Вам не нужно использовать IBOutlet, так как вы не хотите использовать свойства в IB

@interface chatCell : UITableViewCell 
{ 
    UIImageView *homeTeamImage; 
    UILabel *homeTeamLabel; 
    UIImageView *awayTeamImage; 
    UILabel *awayTeamLabel; 
} 

@property(nonatomic, weak) UIImageView *homeTeamImage; 
@property(nonatomic, weak) UILabel *homeTeamLabel; 
@property(nonatomic, weak) UIImageView *awayTeamImage; 
@property(nonatomic, weak) UILabel *awayTeamLabel; 

@end 

и не забудьте

@synthesize homeTeamImage, ...; 

в вашем файле реализации.

0

Вы можете переопределить - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath. Вместо возврата стандартного UITableViewCell вы можете вернуть ваш

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    chatCell c = [[chatCell alloc] init]; 
    return c; 
} 

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

@synthesize не является обязательным, если вы используете xcode 5. Это требуется, только если вы переопределите как setter, так и getter свойства.

0

См. Programmatically Adding Subviews to a Cell’s Content View из руководства по программированию таблиц для iOS. В этом примере ячейки создаются в tableView:cellForRowAtIndexPath:, но вы можете использовать один и тот же подход (добавить представления на представление содержимого ячейки) в подкласс UITableViewCell.

0
@interface chatCell : UITableViewCell 
{ 
    UIImageView *homeTeamImage; 
    UILabel *homeTeamLabel; 
    UIImageView *awayTeamImage; 
    UILabel *awayTeamLabel; 
} 

@property(nonatomic, weak) UIImageView *homeTeamImage; 
@property(nonatomic, weak) UILabel *homeTeamLabel; 
@property(nonatomic, weak) UIImageView *awayTeamImage; 
@property(nonatomic, weak) UILabel *awayTeamLabel; 

@end 


and don't forget to 

    enter code here 

@synthesize "All properties" 
+2

Никаких объяснений ???? –

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