2016-03-15 75 views
2

我在swift中寫了一個由xib定製的視圖。該視圖顯示正確,@IBAction也是正確的。但是當我添加@IBOutlet時,該應用將崩潰。IBOutlet的崩潰

的錯誤信息是:

2016-03-15 22:32:16.650 ****[42692:1015001] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7f8ea483cd30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key cancelBtn.' 

而廈門國際銀行:

XIB Information

而且代碼:

class PYChangeNameView: UIView { 
    var confirmAction: ((name: String?) ->())? 
    var cancelAction: (() ->())? 

    @IBOutlet weak var cancelBtn: UIButton! 

    private init() { 
    super.init(frame: CGRectZero) 
    if let view = UIView.loadFromNibNamed("PYChangeNameView") {  
    view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
    self.frame = UIScreen.mainScreen().bounds self.addSubview(view) 
    } 
    } 

    @IBAction func cancelClick(sender: AnyObject) { 
    PYCNVStaticValues.sharedInstance?.removeFromSuperview() 
    PYCNVStaticValues.cancelAction?() 
    } 
} 

@IBAction作品,但@IBOutlet不工作。 }

+0

是按鈕在廈門國際銀行實際上名爲「cancelBtn」?根據操作名稱和錯誤消息,我猜想它被命名爲「取消」。 –

+0

您可以看到圖片,該按鈕名爲「cancelBtn」。 –

+0

您是否在任何其他地方向此按鈕添加了IBOutlet? –

回答

3

看看錯誤:它告訴你,NSObject沒有cancelBtn字段。爲什麼呢?

看着你的截圖,我可以看到你的File's Owner上有cancelBtn插座。 (出口應設置什麼是你的自定義視圖)。

因此我可以斷定,你的File's Owner對象沒有被正確地與您的PYChangeNameView關聯,並且運行時認爲它只是一個NSObject。我相信你需要將該類設置爲XIB中的類型 - 可能在右側的控件中。

退房,我拍下了這美麗的視網膜品質的截圖:

Beautiful Screenshot at Retina Quality

可能也有一個需要設置模塊場。您可以從this answer獲得一些見解。

+0

我認爲你是對的,我慢慢地得出了相同的結論,只需要確定:-) – pbodsk

+0

@QED我怎樣才能得到與PYChangeNameView的財產關聯? –

+0

@PlutoY我添加了一個美麗的視網膜質量的截圖,告訴你如何。 – QED

0

檢查,以確保您的視圖的xibPYChangeNameView

like This

+0

這就是說**模塊**,實際上有一些不同於**無** –

+0

當然,這是! –

+0

你的模塊應該是你的項目名稱。不是「無」 –