在自定义视图中将出口连接到约束从崩溃中的xib文件结果实例化

时间:2016-02-22 10:17:36

标签: ios swift autolayout interface-builder xib

我有一个自定义的UIView子类,其布局在.xib文件中定义。

我使用类方法创建instaces,该方法从应用程序包中加载xib,如下所示:

class CustomTitleView: UIView
{
    @IBOutlet weak var titleLabel: UILabel!

    @IBOutlet weak var infoButton: UIButton!

    class func instance() -> CustomTitleView
    {
        return UINib(nibName: "CustomTitleView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! CustomTitleView
    }
}

此代码按预期工作。我将此视图用作视图控制器中的自定义导航标题。

xib具有自动布局限制:

  • 在超视图中水平和垂直居中标签
  • 相对于标签垂直居中按钮
  • 修复标签和按钮之间的水平空间。

接下来,我希望对标签添加width约束,并将其连接到上面代码中的插座,以便我可以在运行时控制它(以处理文本截断时间过长等。 )。

xib的文件所有者设置为我的自定义类。 我将宽度约束中的“新引用插座”连接到我班级的新插座:

@IBOutlet weak var widthConstraint:NSAutolayoutConstraint!

当我运行我的代码时,它在此行崩溃:

return UINib(nibName: "CustomTitleView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! CustomTitleView

错误:

  

此类不是键值widthConstraint

的键值编码兼容

我缺少什么?

注意:以下任何一项都没有帮助

  • 清理构建文件夹并重建。
  • 断开插座并重新连接。
  • 将插座连接到另一个(现有)约束。

1 个答案:

答案 0 :(得分:0)

我看到的唯一奇怪的事情是使用 NSAutoLayoutConstraint 而不是 NSLayoutConstraint