2015-07-21 36 views
0

SWIFT/IOS 8.2 我想設置我的CalculatorViewController作爲委託目標,所以我可以獲取數據 - 但我似乎設置它是錯誤的:「EXC_BAD_ACCESS(code:2 )」創建委託從UISplitViewDetail到Swift的主要錯誤

(在GraphView.swift)

protocol CalculatorViewDataSource: class { 
    func calculateYForXEquals(sender: CalculatorViewController, currentX: CGFloat) ->CGFloat? 
} 

class GraphView: UIView { 
    weak var calculatorViewDataSource: CalculatorViewDataSource? 
    //... 
} 

(在GraphViewController.swift)

class GraphViewController: UIViewController { 
    @IBOutlet weak var graphView: GraphView! { 
     didSet{ 
      graphView.calculatorViewDataSource = self.view.superview?.superview as CalculatorViewController 
     } 
    } 
// ... 
} 

(在CalculatorViewController.swift)

class CalculatorViewController: UIViewController, CalculatorViewDataSource{ 
    // ... 
} 

func calculateYForXEquals(sender: CalculatorViewController, currentX: CGFloat) ->CGFloat? { 
    return nil 
} 

問題:

我得到一個崩潰了「EXC_BAD_ACCESS(代碼:2)」的錯誤,當我嘗試設置委託在GraphViewController ...任何想法,爲什麼?

我不知道如何從CalculatorViewController級別上課。 這裏的故事板:

-> SplitViewController - NavigationController - (Master) CalculatorViewController 
     I 
    NavigationController - (Detail) GraphViewController 
+0

遺憾的許多編輯,我仍然試圖繞過stackoverflow.com和不完全相信,如果我這樣做正確/編輯正確。感謝您的耐心,我真的想讓帖子更易讀放心 – John

回答

0

嘗試做這樣的事情:

var graphViewController: GraphViewController? 

    private func setupSplitViewController() { 
     let masterNavigationController: AnyObject? = splitViewController?.viewControllers.first 
     graphViewController = masterNavigationController!.topViewController as? GraphViewController 
     graphViewController!.graphView.calculatorViewDataSource = self 
    } 
+0

如果我在我的CalculatorViewController中添加提供的代碼它編譯但啓動時得到一個致命錯誤(** graphViewController!.graphView.calculatorViewDataSource = self **'致命的錯誤:意外地發現零,而展開一個可選的值')我把它graphViewController可能是零,現在我可以看看視圖生命週期我猜... – John

+0

你應該調用'setupSplitViewController'在'viewDidLoad()'in ViewController案例和'awakeFromNib'或'initWithCoder'的UIView情況。 – Klevison

+0

我從看看建議的解決方案,它看起來像 - 'graphView.calcDataSource = splitViewController!.viewControllers.first!.subviews.first作爲CalculatorViewController'會工作,但我得到相同的錯誤。感謝您的跟進。 – John