2016-08-21 63 views
-2

我有一類代表不工作

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

現在我在該協議被宣佈同一個類調用此宣佈的協議。

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

//some code 

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

其中演示圖形返回UI圖形

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

     return demoGraphView 
    } 

我得到的是意外地發現零,而包裝一個可選值的誤差。我知道我沒有初始化代表的原因。有人可以指導我如何在這裏初始化代表。

函數被調用其他類

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

請幫助

+0

是@FelixSFD我這樣做 – user3759616

回答

1

你所得到的錯誤,因爲Demo.delegatenil打電話時:

delegate.willShowdemoResult(self.demoGraph()) 

你撥打這個電話之前,請確保你已經設置了delegate屬性。初始化Demo或之後DemoResult得到了Demo -instance的地址後,我會推薦這一權利。

假設,已存儲的Demo實例中DemoResult.demoVC。然後,你可以設置delegateDemoResult這樣的:

demoVC.delegate = self 

BTW:這是更好地使用可選的類型來存儲代表:

public var delegate: demoDelegate? 

delegate是可選的,delegate?.willShowdemoResult(self.demoGraph())不會崩潰,如果delegate尚未初始化。