我再次与Storyboard合作,我不是最好的。
在cellForRowAtIndexPath
我有:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"browse_cell";
VJBrowseLargeTableViewCell *cell = (VJBrowseLargeTableViewCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
cell.artistLabel.text = currentVideo.artist;
}
在我的.h我的单元格中:
@interface VJBrowseLargeTableViewCell : UITableViewCell
@property (strong, nonatomic) UIImageView *backgroundImageView;
@property (weak, nonatomic) IBOutlet UILabel *artistLabel;
@property (weak, nonatomic) IBOutlet UILabel *songTitleLabel;
@end
.m表示单元格:
@implementation VJBrowseLargeTableViewCell
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initialize];
}
return self;
}
- (void)awakeFromNib {
[super awakeFromNib];
[self initialize];
}
- (void)initialize {
self.selectionStyle = UITableViewCellSelectionStyleNone;
self.backgroundView = [[UIImageView alloc] initWithFrame:self.bounds];
self.backgroundView.contentMode = UIViewContentModeScaleAspectFill;
self.artistLabel.textColor = [UIColor greenColor];
self.artistLabel.font = [UIFont vojiBoldFontWithSize:20];
self.artistLabel.lineBreakMode = NSLineBreakByTruncatingTail;
self.artistLabel.numberOfLines = 1;
self.songTitleLabel.textColor = [UIColor greenColor];
self.songTitleLabel.font = [UIFont vojiRegularFontWithSize:16];
self.songTitleLabel.lineBreakMode = NSLineBreakByTruncatingTail;
self.songTitleLabel.numberOfLines = 1;
}
对于我的tableView,我已经注册了单元格:
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"browse_cell"];
我的自定义单元格中没有任何方法被调用,cellForRowAtIndexPath
在cell.artistLabel.text = currentVideo.artist;
崩溃。好像我的单元格代码没有正确连接到Storyboard单元格。
但是,在Storyboard中,我确实设置了class
,并且我已正确设置identifier
。
答案 0 :(得分:0)
在这种情况下,我认为您不需要注册该类,但是既然如此,您就是为重用标识符注册[UITableViewCell class]
而不是[VJBrowseLargeTableViewCell class]
。
答案 1 :(得分:0)
您的问题出在:
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"browse_cell"];
您应该注册正确的班级名称:
[self.tableView registerClass:[VJBrowseLargeTableViewCell class] forCellReuseIdentifier:@"browse_cell"];
答案 2 :(得分:0)
UITableViewCells的指定初始化程序实际上是initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
,而不是initWithCoder: (NSCoder*)aDecoder
(请参阅docs)。请尝试覆盖该初始化程序。