2015-11-17 23 views
0

我看過幾個問題提出這個問題,但答案似乎並不確定。在iOS 9中使用XCode 7時,我想從任意數量的子視圖控制器中展開到主菜單視圖控制器。我期望類似以下內容來做我需要的東西:Perfom show segue內放鬆segue

@IBAction func returnToMenuScreen(segue: UIStoryboardSegue) { 
    let departureController = segue.sourceViewController 
    if departureController.title == "ChildViewController" { 
     print("ChildViewController") 
     self.performSegueWithIdentifier("NewSegue", sender: departureController) 
    } 
} 

print函數被調用,但performSegueWithIdentifier不是。類似的問題似乎指向時間問題,但我沒有運氣。

總而言之,如何在父視圖控制器的子視圖控制器之間導航?我想放鬆父母,然後繼續任意兒童視圖控制器。任何和所有的幫助表示讚賞!

回答

1

我試圖理解你的問題,但你的數據不足以找到解決你的問題。可能是你沒有正確的展開功能。不妨跟隨一些關於放鬆賽段的教程。這裏是蘋果的鏈接,其中描述了放鬆繼續。轉到此給定鏈接的底部。然後你可以找到如何正確放鬆繼續。希望這個鏈接能幫助你找到你的問題。

https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson8.html

**** ****更新

嘗試這種解決方案: -

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) { 
dispatch_after(1, dispatch_get_main_queue()) {() -> Void in 
    self.performSegueWithIdentifier("viewController", sender: self) 
} 
} 

,或者你可以引入一個變量來處理SEGUE在viewWillAppear中。

PUT

var show = false // IN UNWIND VIEW CONTROLLER 

變化fromCamera = true,則prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetails" { 
     let MainViewController = segue.destinationViewController as? JobInformationViewController 
     MainViewController!.show= true 
    } 
} 

和使用這樣

override func viewDidAppear(animated: Bool) { 
    if show { 
     self.performSegueWithIdentifier("categorySelection", sender: self) 
     self.show= false 
    } 
}  
+0

退繞賽格瑞是正常的,但我還沒有找到在展開之後以編程方式繼續進行的適當解決方案。我想通過首先展開到主視圖控制器來在子視圖控制器之間導航,以最小化視圖堆棧。 – torple

+0

更新我的答案,看看! :) –

+0

感謝您的迴應。我看過你之前提供的答案,但我們選擇不走這條路。我們決定現在簡化並使用導航控制器。不過,看來我想做的事應該是一個相當普遍的行動。您的上述答案是在子視圖控制器之間導航的唯一方法嗎? – torple