2015-07-21 24 views
1

我的故事板:可以嵌入在NavigationVC集中的視圖作爲直接從主控的splitVC輪詢的細節嗎?

SplitViewController - NavigationController - (Master) CalculatorViewController 
    I 
NavigationController - (Detail) GraphViewController` 

我試圖建立一個代表從(詳細信息)是從(主)提取數據 - 但我似乎無法得到(主)本身設置爲代表:

我從詳細信息視圖中嘗試,在didLoad():graphView.calcDataSource = splitViewController?.viewControllers.first as CalculatorViewController,但它通過展開一個零崩潰 -

如果我嘗試設置graphView.calcDataSource = self在didLoad()在Master端,我得到"Use of unresolved identifier graphView"

什麼是正確的方法來做到這一點?

========

已解決!

(與按鈕故事板賽格瑞稱爲「顯示圖形」)

//CalculatorViewController.swift: 
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject!) { 
    if (segue!.identifier == "Show Graph") { 
     var yourNextViewController = (segue!.destinationViewController as UINavigationController) 
     var detail = yourNextViewController.viewControllers[0] as GraphViewController 
     var tempview = detail.view // FORCES THE VIEW object into existence, without this it will compile, but next line will crash at runtime (graphView nil) 
     detail.graphView.calcDataSource = self 
    } 
} 

注意var tempview = detail.view是這裏的關鍵,儘管沒有被使用。我明白,因爲它建立的觀點和插座..

回答

0

不看你的代碼,我不知道你的詳細視圖是如何實例化。您可以在實例化詳細信息視圖的位置設置連接。在使用storyboard時,通常在prepareForSegue中完成。

+0

新的swift,有沒有一種簡單的方法來弄清楚如何實例化視圖? (在代碼本身中找不到有關NavigationControllers或SplitViewController的任何指示,這些都是在故事板中完成的) – John

+0

研究將prepareForSegue添加到您的代碼中。在那裏設置一個斷點以確保它正在被擊中並在那裏建立你的主/細節連接。 – Boon

+0

Detail視圖是在屏幕上顯示的第一個東西。從打印輸出中,CalculatorVC在splitViewController中正確設置,但隨後調用細節SOMEHOW ....我似乎無法弄清楚發生了什麼,它可能來自故事板UISplitView嗎? _to澄清_:我沒有使用任何手動分配的賽段,這一切都來自故事板。 – John

相關問題