2016-02-22 194 views
1

我有一個自定義的UIView子類,其佈局是在.xib文件中定義的。將Outlet連接到自定義視圖中的約束從xib文件實例化導致崩潰

創建instaces與從應用程序的包加載廈門國際銀行,像這樣一類方法:

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 

與錯誤:

This class is not key value coding-compliant for the key widthConstraint

我錯過了什麼?


注:有下列情形的幫助

  • 乾淨生成文件夾,然後重建。
  • 斷開插座並重新連接。
  • 將插座連接到另一個(現有)約束。

回答

0

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

相關問題