2016-11-04 9 views
0

私は.xibを作成し、このxibを別のビューに追加しました。その.xibファイルにデリゲートメソッドを追加したいと思います。ここに私のコードです:nilを表示する迅速なデリゲート

.xibファイル

  • しかし、私はそのデリゲートにnil値を取得しています "crossBtnTapped" 方式で

    import UIKit 
    
    protocol CustomCheckBoxWithCrossDelegate { 
    
        func deleteCustomCheckbox(itemToDelete: String) 
    } 
    
    class CustomCheckBoxWithCross: UIView { 
    
        @IBOutlet weak var radioButton: UIButton! 
        @IBOutlet weak var checkboxLbl: UILabel! 
        @IBOutlet weak var checkboxCrossBtn: UIButton! 
    
        var blockIndexForTheCrossButton: Int = 0 
        var delegate: CustomCheckBoxWithCrossDelegate! 
    
        override init(frame: CGRect) { 
         super.init(frame: frame) 
         loadViewFromNib() 
        } 
    
        required init?(coder aDecoder: NSCoder) { 
         super.init(coder: aDecoder) 
         loadViewFromNib() 
        } 
    
    
        func loadViewFromNib() { 
         let bundle = NSBundle(forClass: self.dynamicType) 
         let nib = UINib(nibName: "CustomCheckBoxWithCross", bundle: bundle) 
         let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView 
         view.frame = bounds 
         view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
         self.addSubview(view); 
        } 
    
    
        @IBAction func crossBtnTapped(sender: AnyObject) { 
         print("Delegate --> \(delegate)") 
         delegate!.deleteCustomCheckbox("hello") 
        } 
    } 
    

誰でも私が間違っていることを教えていただけますか?

+0

どこCustomCheckBoxWithCrossDelegateを実装したのですか? – Sahil

+0

他のビューでは、この.xibファイルを追加しています。 –

+0

他のビューコードを表示できますか? – Sahil

答えて

0

このプロトコルを実装した他のクラスには、CustomCheckBoxWithCrossのインスタンスが必要です。 CustomCheckBoxWithCrossインスタンスのdelegateプロパティをそのファイルにselfに設定します。

+1

ありがとうございます。他のビューでデリゲートプロパティを設定していません。問題が解決しました。 –

+1

@SamuelPatterson:Pの答えを受け入れる – Sahil

0

以前にこのエラーが数回発生しました。デリゲートがnil条件でない場合に追加します。

crossBtnTapped FUNC @IBAction(送信者:ANYOBJECT){

if delegate != { 
    delegate!.deleteCustomCheckbox("hello") 
    } 
}