从 NIB 加载自定义 UITableViewCell 问题
Posted
技术标签:
【中文标题】从 NIB 加载自定义 UITableViewCell 问题【英文标题】:Custom UITableViewCell problem loading from NIB 【发布时间】:2011-04-18 12:25:52 【问题描述】:更新:我现在解决了这个问题 - 请参阅我自己的评论。令人惊讶的是,写下问题的频率可以在您再次解决问题时得到解决!
我一定已经阅读了 SO 上的每个线程和 Apple 上的示例,但我无法让它在我的情况下工作,我想知道我做错了什么?
我使用 XCode 4 在 IB 中创建了一个自定义单元格。文件的所有者设置为表格的自定义视图控制器的类,并且我有一个用于 UITableView 单元格的 IBOutlet,据我所知,该单元格已连接好.我通常通过代码完成所有表格单元格并使用快速滚动方法,但对于这个项目,我确实需要使用 nibs 来加载单元格内容,而且我有些悲伤,我无法弄清楚。
所以在我的接口文件中我有;
@interface myCustomTableViewController <various delegates>
UITableViewCell *customNibCell;
...
@property (nonatomic,assign) IBOutlet UITableViewCell *customNibCell;
在 customTableViewController 中,我在 cellForRowAtIndexPath 中执行此操作;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@:"customDirCell"];
if (cell == nil)
[[NSBundle mainBundle] loadNibNamed:@"DirectoryCellWithMenu" owner:self options: nil];
cell = customNibCell;
self.customNibCell = nil;
[self configureCell:cell atRow:indexPath.row];
我的 configureCell 方法这样做是为了进入单元格并取出我希望自定义的内容。
UIImageView *fileImageView = (UIImageView *)[cell viewWithTag:3];
UILabel *headingTextLabel = (UILabel *)[cell viewWithTag:4];
UILabel *modifiedTextLabel = (UILabel *)[cell viewWithTag:5];
UILabel *sizeTextLabel = (UILabel *)[cell viewWithTag:6];
问题
在我看到正确布局的情况下,单元格确实可以加载到表格中。此外,我在各种按钮上定义的自定义操作都可以正常触发,因此似乎单元已正确连接。
但是没有任何自定义工作 - 例如,我似乎无法更改任何标签的文本,并且在调查中,每个 [cell viewWithTag:nn] 的结果都是 nil清楚地指出了问题,但我看不出是什么原因。
-
的标识符
UITableViewCell 设置为
"customDirCell"
标签的对象标识
等确实是 3,4,5,6 根据
IB
xib 恰好包含 1 个对象,
UITableViewCell
我看不出 nib 文件创建或代码有什么问题,但我显然遗漏了一些东西!
任何善良的灵魂都可以阐明我应该寻找的地方吗?
【问题讨论】:
ARGGGH。好的,所以我发现了问题。我将对象 ID 标识(由 IB 设置)与 Tag 属性混淆了——这是我需要手动设置的。希望这可以帮助其他可能陷入与我相同的陷阱的人! 【参考方案1】:你试过了吗
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@:"customDirCell"];
if (cell == nil)
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DirectoryCellWithMenu" owner:self options: nil];
cell =[nib objectAtIndex:0];
self.customNibCell = nil;
【讨论】:
【参考方案2】:我已经根据我的评论解决了这个问题。
【讨论】:
以上是关于从 NIB 加载自定义 UITableViewCell 问题的主要内容,如果未能解决你的问题,请参考以下文章
从 NIB 与从代码加载自定义滑块:从代码加载时不存在子视图
从 NIB 加载自定义 UITableViewCell 问题
从 nib 加载自定义 UIView 会导致无限循环或抛出 nil 异常