我怎样才能解除一个模式segue,然后执行push segue到新的视图控制器

我试图从navigation controller执行一个push segue ,解散之前在navigation controller上显示的modal

内部模态( UIViewController ):

 func textFieldShouldReturn(textField: UITextField) -> Bool { var searchNav = SearchNavigationController() self.dismissViewControllerAnimated(true, completion: {searchNav.goToNextView()}) return true } 

SearchNavigationController里面:

 func goToNextView() { performSegueWithIdentifier("searchNavigationToNextView", sender: self) } 

问题是,当我打回来,我得到这个错误:

终止应用程序由于未捕获的exception“NSInvalidArgumentException”,原因:“Receiver()没有与标识符searchNavigationToNextView”

segue出现在我的storyboard ,从UINavigationController转到next view

在这里输入图像说明

编辑:试过这个,在_SendSelectViewController中声明_sender var _sender = self并没有工作。

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "searchNavigationToSingleSearch" { let singleVC = segue.destinationViewController as! SingleSearchViewController singleVC._sender = self } } 

更新你的代码,

 func textFieldShouldReturn(textField: UITextField) -> Bool { var searchNav = SearchNavigationController() self.dismissViewControllerAnimated(true, completion: {self.presentingViewController.goToNextView()}) return true } 

我有同样的问题,mattgabor了,我试过阿希什的解决scheme,但它并没有为我工作。

我在代码中的问题是在“dismissViewControllerAnimated()”的完成块内部,propery“self.presentingViewController”已经是零了,当我想从我以前执行推的viewController的方法(方法“goToNextView ()“在这个例子中)

所以我的解决scheme只是在调用“dismissViewControllerAnimated()”之前创build一个variables来保存以前的viewController。 使用当前的例子,它看起来像这样:

  func textFieldShouldReturn(textField: UITextField) -> Bool { if let searchNav = self.presentingViewController as? SearchNavigationController { self.dismissViewControllerAnimated(true) { searchNav.goToNextView() } } return true }