2016-08-21 15 views
-2

は、私はクラス委任機能していない

public protocol demoDelegate { 
    func willShowdemoResult(DemoGraph: UIView) 
} 

今、私はプロトコルが宣言されている同じクラスでこれを呼び出していますで宣言されたプロトコルを持っています。

デモグラフは、私は、オプションの値をラップしながら、予想外にnilを見つけ、エラーを取得していますUIグラフ

func demoGraph() -> UIView { 
     //some code 

     return demoGraphView 
    } 

を返し

public class Demo:UIViewController { 
public var delegate : demoDelegate! 

//some code 

self.delegate.willShowdemoResult(self.demoGraph()) 
} 

。私はデリゲートを初期化していない理由を知っています。誰かが私を導くことができますここでデリゲートを初期化する方法。

機能が

class DemoResult: UIViewController, demoDelegate{ 
func willShowdemoResult(DemoGraph: UIView) 
// some code 
} 

他のクラスで呼び出されているDemo.delegatenilであるため、呼び出すときには、エラーを取得している

+0

はい@FelixSFD私はそれをしました – user3759616

答えて

1

を助けてください:

delegate.willShowdemoResult(self.demoGraph()) 

をあなたはこの電話をかける前に、 delegateプロパティを設定していることを確認してください。 Demoを初期化した後、またはDemoResultの直後にDemo -instanceのアドレスを取得した場合は、この権利をお勧めします。

DemoのインスタンスをDemoResult.demoVCに保存したとします。そして、あなたはこのようにDemoResultdelegateを設定することができます。

demoVC.delegate = self 

をところで:

public var delegate: demoDelegate? 

delegateはオプションで、delegate?.willShowdemoResult(self.demoGraph())がクラッシュしません:それはデリゲートを保存するために、オプションの種類を使用することをお勧めしますdelegateがまだ初期化されていない場合

関連する問題