目前我有一个带有自定义 UITableViewCells 的新闻源,例如:
NewsCell.m
NewsCell.xib
NewsCell_Friends.m
NewsCell_Friends.xib
NewsCell_CheckinPhoto.m
NewsCell_CheckinPhoto.xib
[...]
NewsCell_Friends 和 NewsCell_Checkin 都继承自 NewsCell(所有子类共享的方法和元素,如 titleLabel、dateLabel)
目前,我从未使用过 NewsCell 类本身,只使用子类,因为每种新闻都有非常独特的布局(Xib)。
现在让我们说,我想在我的新闻源的 UI 方面有一个轻量级的实现,其中所有单元格具有相同的外观、相同的高度、相同的内容:titleLabel 和 dateLabel。(例如实际上的通知提要)。
我想做的是重用 NewsCell.xib 作为每种新闻的独立版本,例如:
NewsCell_CheckinPhoto *cell = [tableView dequeueReusableCellWithIdentifier:@"CheckinPhoto"];
if (!cell){
UIViewController *c = [[UIViewController alloc] initWithNibName:@"NewsCell" bundle:nil];
cell = (NewsCell_CheckinPhoto *)c.view;
cell.parent = self;
}
[cell configureCell:indexPath withNews:news];
return cell;
在cellForRowAtIndexPath委托方法中。
请注意,我在此控制器中使用的是 NewsCell xib 而不是 NewsCell_CheckinPhoto xib。
但它不起作用:nib 文件加载良好,并且 NewsCell.xib 的内容很好地显示在单元格中,但是 NewsCell_CheckinPhoto 中的标签配置(例如,titleLabel.text = @"Robert 拍了一张照片")类既不工作,也不叫。
仅当我在 NewsCell.xib 文件中指定类类型 *NewsCell_CheckinPhoto* 时它才有效,但这不允许我重用 NewsCell.xib 来呈现带有示例和唯一表示的 NewsCell 的每个子类。