【发布时间】:2012-08-31 12:09:19
【问题描述】:
当我尝试通过 UINib 的 instantiateWithOwner 方法从 xib 文件加载自定义 UITableViewCell 时出现以下错误。我已经尝试了在这里可以找到的所有其他解决方案,但都没有运气。问题似乎是当 UINib 打开 xib 文件时,它使用超类 UITableViewCell 而不是我的自定义类 ContentPackCell。我附上了一个来自 Interface Builder 的屏幕截图,显示了我将 xib 与我的类关联的位置以及关联标识符的位置。必须有一些其他的步骤,我错过了。
错误:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UITableViewCell 0x6b87220> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key descriptionLabel.'
代码(类似于 Apple 的示例 AdvancedTableViewCells 项目):
ContentPackCell *cell = (ContentPackCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[self.cellNib instantiateWithOwner:self options:nil];
cell = tmpCell;
self.tmpCell = nil;
}
更新:
【问题讨论】:
-
我已经准备好放弃这一点,回到使用 NSBundle 的 loadNibNamed 方法的旧方法。它似乎对我的情况很好。
-
我发现如果我右键单击我的自定义单元格标签并拖动到适当的 .h 文件,以创建一个出口,出口被分配给文件的所有者,这会导致上述崩溃。相反,如果我右键单击标签并拖动到表格单元格(向左),然后选择适当的插座,一切正常。
-
@softwareevolved 同意这看起来是一个更好的答案。我没有回去尝试过,但我确实投票结束了我的问题,因为我的问题与那个问题重复。谢谢!
标签: iphone objective-c ios cocoa-touch cocoa-bindings