Swift 包中的 XIB 文件 - 忽略约束
Posted
技术标签:
【中文标题】Swift 包中的 XIB 文件 - 忽略约束【英文标题】:XIB File in Swift Package - Constraints ignored 【发布时间】: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 中:***.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
为标签设置背景颜色,这确实有效。
你是否从主包更新到包的任何包?
【参考方案1】:
这很可能不是您的错误。 Apple bugreporter 来救援。
在您自己的框架中从 xibs 加载单元格可以正常工作: 奇怪的是,包裹会给工作带来麻烦。
【讨论】:
以上是关于Swift 包中的 XIB 文件 - 忽略约束的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 项目的 Git 忽略文件正在忽略 .swift 文件