【发布时间】:2020-04-18 23:37:59
【问题描述】:
【问题讨论】:
-
这种事情通常可以通过重启 Xcode 和/或你的 Mac 来解决。这将重新启动代理并允许它再次开始呈现您的 UI。你已经试过了吗?
-
@siburb 是的,我尝试了很多次重新启动和删除派生数据文件夹
【问题讨论】:
我也面临同样的问题...已解决
Editor -> Refresh All Views
【讨论】:
我花了几个小时来解决这个问题,但所有的答案都没有帮助我。终于发现自己的错误了。
在@IBInspectable didSet 属性中,我调用了常用的 setup() 函数来利用我的视图。但是,我试图在不检查它是否为 nil 的情况下调整 textField。这就是为什么我遇到“渲染失败”问题以及运行时崩溃的原因?
例如:
@IBInspectable var isTitleEnabled: Bool = true{
didSet{ setup() }
}
setup() 函数是:
private func setup(){
textField.isSecureTextEntry = isPassword
}
这是错误的。 Xcode 不允许以这种方式修改子视图。 当 IB 组件被渲染时,Xcode 认为它还没有被初始化,所以它会引发一个错误。为了解决这个误解,我们需要确保 IB 组件不是 nil。
所以,我们需要这样使用它:
guard textField != nil else { return }
textField.isSecureTextEntry = isPassword ? true : false
IB 组件不仅仅需要是一个 UITextField。它适用于其他 IB 组件,如 UILabel、UIImageView 等。
【讨论】:
textfield?.isSecureTextEntry = isPassword ? true : false。
请参阅此答案https://stackoverflow.com/a/52790289/8276509 或 只需尝试转到 Editor,然后在您的 Storyboard 选择中Refesh All View
【讨论】: