【发布时间】:2021-02-15 09:42:22
【问题描述】:
我将一些代码重构为它自己的 Swift 包。其中一部分是一个表格视图单元格为 .xib 文件,我将其放入 Resources 文件夹中。
现在出现了两个问题,在我将所有内容重构为自己的 Swift 包之前,这些问题都不存在:
A) 单元格中标签的约束被简单地忽略,文本位于单元格的顶部,而它应该在中间:
B) 出现的另一个问题是在该单元格的类中,以下代码会引发错误:
@IBOutlet weak var resultTextLabel: UILabel! // this is the label
override func awakeFromNib() {
super.awakeFromNib()
resultTextLabel.adjustsFontSizeToFitWidth = true // this line leads to the error
}
'NSUnknownKeyException', reason: '[
setValue:forUndefinedKey:]: 这个类不符合 key resultTextLabel 的键值编码。'
对 Swift 包的简单重构不应该破坏这样的事情。
问题:这里发生了什么?如何确保约束再次起作用?为什么我不能再调整awakeFromNib里面的textlabel字体大小选项了?
【问题讨论】:
-
您的自定义单元格被认为是
UITableViewCell,而不是YourCustomTableViewCell检查“继承模块”的状态可能在您设置类的InterfaceBuilder 中:stackoverflow.com/a/54556194/1801544? -
@Larme 单元格连接到一个自定义类,即
ResultCell: UITableViewCell。应该没问题。 -
当错误为
NSUnknownKeyException', reason: '[<UITableViewCell 0x156f06570> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key resultTextLabel.'时,不是单元格不被视为ResultCell。所以我猜它没有加载正确的xib,或者不理解它的类。您能否将背景颜色设置为橙色,删除崩溃线,然后查看您的应用中的背景是否为橙色? -
@Larme 当我取消选中“从目标继承模块”并在“模块”下选择 Swift 包的名称时,它不会引发任何错误,但
awakeFromNib内的resultTextLabel会交替打印nil和Optional(UILabel...)。所以我必须if resultTextLabel != nil为标签设置背景颜色,这确实有效。 -
你是否从主包更新到包的任何包?
标签: ios swift swift-package-manager