如何同时使用带导航控制器的segue?

时间:2015-11-02 06:55:59

标签: ios swift uiview uinavigationcontroller

由于我无法找到关于此案例的任何内容,我想我做错了什么,但不确定原因。

我有: NavigationController -> (root view) UIViewController (1st) -> (here is a segue) -> UITabBarController (2nd) -> UIViewController

我想将1st UIView推送到2nd UIView,同时将2nd推送到导航控制器堆栈。

当我在prepareForSegue中执行pushViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if (segue.identifier == "mySegue") { self.navigationController?.pushViewController(segue.destinationViewController, animated: true) } }

我有异常

  

应用程序尝试以模态方式呈现活动控制器

(很明显,因为我使用导航控制器制作了push,然后尝试再次展示相同的视图)

如何同时使用带导航控制器的segue?

谢谢!

UPD。如答案中所述,弃用的Segue类型“Push”(不是“Show(例如Push)”)完全按照我的意愿工作,但它已被弃用......有没有“好”的方法?

1 个答案:

答案 0 :(得分:2)

如果您正在使用故事板来设置segue,那么您只需将segue类型设置为' Push'它将从最近的UINavigationController祖先推送它。您只需要调用self.performSegueWithIdentifier("yourSegueIdentifierHere"),导航控制器就会推送它。

调用此方法后,当前视图控制器将调用prepareForSegue设置要显示的下一个视图控制器。您收到错误是因为您试图让导航控制器推送已经尝试呈现的同一个视图控制器。

希望这有点帮助。