子类化 UITableViewCell 不适用于出队
Posted
技术标签:
【中文标题】子类化 UITableViewCell 不适用于出队【英文标题】:Subclassed UITableViewCell not working with dequeue 【发布时间】:2013-06-30 22:32:09 【问题描述】:我用一个新类 symbolCell 子类化 UITableViewCell,它有一个头文件、实现和 xib 文件。我在我的 mainViewController 的 viewDidLoad 方法中将 symbolCell 注册到 firstTable,一个 UITableView,如下:
UINib *nib = [UINib nibWithNibName:@"symbolCell" bundle:nil];
[firstTable registerNib:nib forCellReuseIdentifier:@"symbolCell"];
然后我稍后将单元格出列
symbolCell *cellForTableOne = [firstTable dequeueReusableCellWithIdentifier:@"symbolCell"];
但是,此代码会产生错误“* Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key symbolFieldLabel.'" 其中 symbolFieldLabel 是 symbolCell 上的 UILabel。也就是说,那条确切的行就是发生错误的地方。为什么会这样?我以前多次对单元格进行子分类,但从未收到此错误。
【问题讨论】:
你检查了XIB中使用的所有类名吗? 看起来你在xib中定义了一个outlet,但是UITableViewCell
子类中没有属性来存储outlet;或者正如@Wain 所说,您忘记在 xib 中指定子类。
xib 类名是 symbolCell,当我检查文件所有者下的连接时,有一个到有效属性的有效连接。还有其他想法吗?我想不通。
尝试删除所有 IBOutlet 连接,然后重新连接。当我在一个 xib 中复制一些视图并将它们粘贴到另一个 xib 中时,我曾经遇到过同样的错误,并且所有 IBOutlets 仍然连接到旧的
我刚试过这个,它似乎不起作用。我敢肯定,我只是缺少一个简单的解决方案。
【参考方案1】:
不要将 File's Owner 设置为您的自定义类,而是将您的根视图设置为您的自定义 UITableViewCell 子类。然后将您的插座连接到根视图。
【讨论】:
以上是关于子类化 UITableViewCell 不适用于出队的主要内容,如果未能解决你的问题,请参考以下文章
想知道如何以编程方式在 swift 3.0 中对 UITableViewCell 进行子类化?
子类化 UITableViewCell 并在 Storyboard 中使用它
iOS:使用 nib 子类化 UITableViewCell,进入 UIView(不是视图控制器)子类