gpt4 book ai didi

iOS,用程序化的 : IBNSLayoutConstraint issue 替换导出约束

转载 作者:行者123 更新时间:2023-11-29 12:09:44 25 4
gpt4 key购买 nike

我正在阅读 Big Nerd Ranch,iOS 教科书第 20 章的最后,他们正试图替换 width 上的两个约束。和 heightimageView称为 thumbnailView对于一个编程约束和 height约束:

NSLayoutConstraint *constraint =
[NSLayoutConstraint constraintWithItem:self.thumbnailView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.thumbnailView
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0];
[self.thumbnailView addConstraint:constraint];

因此,他们删除了一个约束属性:@property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageViewWidthConstraint (在类里面,而不是在 .xib) 中,将 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageViewHeightConstraint 留在后面。在各自的 .xib 中,他们检查 Remove at build time 是否为 width 约束的 thumbnailView,程序开始崩溃(它在使用之前运行良好两个约束的导出)具有以下错误(在 Xcode 7 中):

Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'

如果我取消选中 remove at build time它因以下错误而崩溃:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<BNRItemCell 0x7ba87800> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key imageViewWidthConstraint.'

widthheight类中使用约束导出来适应用户的字体大小变化。

如果有人能解释为什么程序开始崩溃以及如何修复它,那就太好了。

最佳答案

您从代码中删除了 socket ,但没有在 Storyboard(或 xib)中断开它。

在文档大纲中按住 Control 键并单击您的 View Controller 以查看失效连接:

broken connection

那个小小的黄色小三角形告诉你 Xcode 足够聪明,知道没有名为 imageViewWidthConstraint 的导出,但太愚蠢了,无法在 Storyboard场景中发出警告,甚至在编译。

单击连接上的 ✖︎ 以断开连接。

顺便说一句,您现在可以直接在 Storyboard 或 xib 中创建宽高比约束,但我猜您无法在编写该书时返回。

关于iOS,用程序化的 : IBNSLayoutConstraint issue 替换导出约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com