gpt4 book ai didi

iphone - 在 UITableViewCell 的父类中使用 XIB

转载 作者:可可西里 更新时间:2023-11-01 04:02:38 24 4
gpt4 key购买 nike

目前我有一个带有自定义 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 委托(delegate)方法中。

请注意,我在此 Controller 中使用的是 NewsCell xib 而不是 NewsCell_CheckinPhoto xib。

但它不起作用:nib 文件加载良好并且 NewsCell.xib 的内容在单元格中显示良好,但标签的配置(例如,titleLabel.text = @"Robert token a photo")在 NewsCell_CheckinPhoto 类中既不工作也不调用。

仅当我在 NewsCell.xib 文件中指定类类型 *NewsCell_CheckinPhoto* 时它才有效,但这不允许我重用 NewsCell.xib 来使用样本和唯一表示呈现 NewsCell 的每个子类。

最佳答案

当我理解你更正你想从 XIB 加载一个单元格时。
你不应该用

UIViewController *c = [[UIViewController alloc] initWithNibName:@"NewsCell"bundle:nil];但只将单元格放在 XIB 中,然后用

加载它

UITableViewCell *cell = [[NSBundle mainBundle] loadNibNamed:@"NewsCell"][0];

或类似的(请检查文档)。

另外请记住,当您从 XIB 加载表格 View 单元格之类的内容时,它是使用 initWithCoder: 而不是 initinitWithFrame 初始化的: 。这可能就是您的网点未初始化的原因。

关于iphone - 在 UITableViewCell 的父类中使用 XIB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com