Xcode 10.1 - “IB Designables。无法呈现和更新自动布局状态”。代理崩溃

7

我有一个问题,我的故事板无法渲染布局,因此我无法添加约束条件,也无法查看viewController的布局。

Issues Image

我该如何解决这个问题呢?


这种情况通常可以通过重新启动Xcode和/或您的Mac来解决。这将重新启动代理并允许其再次开始渲染您的UI。您已经尝试过这个方法了吗? - siburb
@siburb 是的,我尝试了很多次重新启动和删除派生数据文件夹。 - Ben10
请阅读《为什么在提问时不上传代码或错误的图片?》(例如,“只有当其他方式无法清晰说明问题,例如提供用户界面截图时才应该使用图片来说明问题。”),并采取适当的行动。action - Peter Mortensen
IB = 界面构建工具 - Peter Mortensen
2个回答

2
所有之前的答案都没有帮到我,但我自己解决了。
@IBInspectable didSet属性中,我调用了通用的setup()函数来使用我的视图。然而,我试图调整一个textField却没有检查它是否为nil。这就是为什么我遇到“无法呈现”问题并且还有运行时崩溃的原因。
例如:
@IBInspectable var isTitleEnabled: Bool = true{
    didSet{ setup() }
}

而且setup()函数是:
private func setup(){
    textField.isSecureTextEntry = isPassword
}

这段文字的意思是:“这是错误的。Xcode不允许以这种方式修改子视图。当Interface Builder(IB)组件被渲染时,Xcode认为它尚未初始化,因此会引发错误。为解决这种误解,我们需要确保接口构建器组件不是 nil。因此,我们需要像这样使用它:”
guard textField != nil else { return }
textField.isSecureTextEntry = isPassword ? true : false

界面生成器不仅适用于UITextField组件,还可以应用于其他界面生成器组件,如UILabel、UIImageView等。

1
你可以将解决方案的代码简化成textfield?.isSecureTextEntry = isPassword ? true : false - adamjansch

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接