【发布时间】:2015-07-30 05:16:21
【问题描述】:
我正在尝试从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)
}
问题是当我点击返回时,我得到了这个错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'接收者 () 与 标识符'searchNavigationToNextView''
转场出现在我的storyboard 中,从UINavigationController 到next view。
编辑:尝试了这个,其中 _sender 在 SingleSearchViewcontroller 中声明为 var _sender = self 并且它不起作用。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "searchNavigationToSingleSearch" {
let singleVC = segue.destinationViewController as! SingleSearchViewController
singleVC._sender = self
}
}
【问题讨论】:
-
您需要从代表其来源的适当控制器调用segue。在这种情况下,您可能应该在 self 而不是导航控制器上调用 segue
-
你不能从 UINavigationController 调用 segue,你应该从 UINavigationController 的顶部控制器调用它
-
@jinhualiao 说得有道理,但我只是尝试了一下,得到了同样的错误。这可能与错误中有一个额外的 ' 的事实有关吗?虽然这不在我的代码中......
标签: ios swift uiviewcontroller uinavigationcontroller segue