Perfom在一个放松的segue内显示segue

时间:2015-11-17 22:44:45

标签: ios xcode swift xcode7 ios9.1

我已经看到了几个问这个问题的问题,但答案似乎并不确定。使用XCode 7和iOS 9,我想从任意数量的子视图控制器中展开主菜单视图控制器。我希望以下内容可以满足我的需求:

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

调用print函数,但不执行performSegueWithIdentifier。类似的问题似乎指出了时间问题,但我没有运气。

总结一下,如何在父视图控制器的子视图控制器之间导航?我想放松到父,然后segue到任意子视图控制器。任何和所有的帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

我试图了解您的问题,但您的数据不足以找到问题的解决方案。可能是你没有正确连接正确的退绕功能。最好关注一些关于展开segues的教程。这是苹果的链接,它描述了放松segue。转到此给定链接的底部。然后你可以找到如何正确解开segue。希望这个链接有助于找到你的问题。

  

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)
 }
}

或者你可以在viewWillAppear中引入一个变量来处理segue。

PUT

var show = false // IN UNWIND VIEW CONTROLLER 

在prepareForSegue中更改fromCamera = true

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
   }
 }