无法使用 .xib 文件在我的自定义单元格中添加任何内容?
Posted
技术标签:
【中文标题】无法使用 .xib 文件在我的自定义单元格中添加任何内容?【英文标题】:Cannot add any content in my custom cell using a .xib file? 【发布时间】:2014-11-28 20:15:36 【问题描述】:我无法从自定义单元格的 xib 文件中获取内容,单元格为空,单元格 .xib 文件仅包含 UILabel,那么 Master 类(在 Master-Detail 项目中)中的代码如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
MyCell *cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
//[self configureCell:cell atIndexPath:indexPath];
return cell;
self configureCell 用于 Core Data 的地方,为了测试我的 UILabel,我不想从 Core Data 中获取值,所以我评论了这一行。 故事板中“自定义类”设置为“MyCell”,标识符相同...
我也在 MyCell 课堂上试过这个:
- (void)awakeFromNib
// Initialization code
self.ibLabel.text = @"allo";
但我的单元格仍然是空的...每个单元格的高度在 .xib 中也与代码中相同...
编辑#1:
这可以注册单元格自定义类:
UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"Cell"];
【问题讨论】:
【参考方案1】:确保在 viewDidLoad 中注册 nib:
self.tableView.registerNib(UINib(nibName: "MyCell", bundle: nil), forCellReuseIdentifier: "Cell")
【讨论】:
是的,谢谢,如果nib和class同名,为什么还要注册呢?现在可以正常使用了,非常感谢 看起来这只是 Apple 要求的接线过程的一部分。很高兴它对你有用。【参考方案2】:您必须初始化单元格。它可能是第一个单元格,而您之前没有...
如果现有单元格可用,此方法会将现有单元格出列,或者根据您之前注册的类或 nib 文件创建一个新单元格。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
MyCell *cell;
cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
if (cell == nil)
cell = [[MyCell alloc] init];
cell.ibLabel.text = @"allo";
return cell;
【讨论】:
谢谢,还是什么都没有...我删除了tableView,添加了一个新的,出口似乎是自动添加的(数据和委托设置为“Master”),我也要求1 row 和 1 section 还是有很多空行,正常吗? “大师”是什么意思?您必须将委托和数据源链接到 tableView 的文件所有者,并且必须将其声明为 UITableViewDelegate 和 UITableViewDataSource 感谢LucaD,现在可以正常使用了,我必须注册笔尖名称,请看下面的答案,非常感谢支持! ;)【参考方案3】:为什么不在单元格中试试 forRow:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
MyCell *cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.ibLabel.text = @"allo";
return cell;
如果这不起作用,您必须确保“Cell”也是情节提要中的标识符,并且情节提要中的类是 MyCell。
首先,一个愚蠢的问题:你实现了这个方法并且它没有返回 0 吗?
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return 5; // To test
第二: 在情节提要中更改自定义单元格的背景颜色,以确保这是此单元格绘画。
【讨论】:
谢谢,但还是一无所获......该类确实是“MyCell”和标识符“Cell”,Core Data 不再填充单元格,我的单元格类是带有 .xib 的基本类文件...就是这样。 @Paul 更多东西要测试。 非常感谢 Onik IV 的帮助,答案是使用 registerNib,现在单元格显示良好,感谢支持! ;)以上是关于无法使用 .xib 文件在我的自定义单元格中添加任何内容?的主要内容,如果未能解决你的问题,请参考以下文章
在主视图控制器的自定义单元格中使用来自 UIButton 的 IBAction