2013-04-14 17 views
2

有沒有辦法讓一個按鈕放鬆回到特定的視圖控制器?例如,假設我有ViewController A和B.兩者都以模態方式繼承到ViewController C.現在我明白如何退回到之前的視圖控制器之一(As was explained here),但我該如何返回到呈現VC C的特定視圖控制器?Segue放鬆回到最後一個特定的視圖控制器

所以總結一下,我試圖弄清楚的是...... 如果A選擇了C,那麼當選擇按鈕時我想退回到A.如果B選擇了C,那麼當選擇該按鈕時,我想退回到B.

回答

3

您應該使用標準方式從模態繼續返回。把它放在你的'後退'按鈕中...

[[self presentingViewController] dismissViewControllerAnimated:YES]; 

這不使用故事板或segue的返回,只是代碼。

+0

或在Swift中:'self.presentingViewController!.dismissViewControllerAnimated(true,completion:nil)'' –

0

您可以使用presentsViewController'title'屬性來將展開過程引導到所需的原始ViewController。該解決方案還允許您從您的視圖控制器C到ViewControllers A和B.

1在視圖控制器A的故事板畫布的頂部傳遞數據)選擇視圖控制器按鈕(黃色的)

2)在屬性檢查器(視圖控制器部分)給ViewController A一個標題。

3)中包括的ViewController甲以下代碼:

@IBAction func returned(segue: UIStoryboardSegue) { 
    // Don't need any code here 
} 

4)重複步驟1,2和3的ViewController B.

5)重寫中的ViewController C中的prepareForSegue功能如下:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if self.presentingViewController!.title! == "ViewControllerATitle" { 
     let destination = segue.destinationViewController as! ViewControllerA 
     destination.someFunction(someArgument) 
    } 
    else if self.presentingViewController!.title! == "ViewControllerBTitle" { 
     let destination = segue.destinationViewController as! ViewControllerB 
     destination.someFunction(someArgument) 
    } 
} 
相關問題