如何在转换到新的UIViewControllers时从层次结构中删除UIViewControllers?

时间:2016-01-14 14:46:45

标签: ios iphone swift uiviewcontroller uinavigationcontroller

我正在开发一款不完全"顺序"至于观点如何发展。

例如,我可以进入以下场景,我将转向新视图:

MatchesNavigationController -> ModalOptionsController -> ProfileViewController -> ModalOptionsController -> MatchesNavigationController -> MatchesNavigationController...

依此类推。

在英语中,正在发生的事情是用户正在查看他们的人物匹配并且在用户的文本消息中,然后他们从工具栏中单击模式选项按钮并弹出一些选项,然后是用户想查看他们的个人资料。然后,从配置文件中,他们可以单击按钮以弹出相同的模式,然后可以从那里转到与该人的对话,该对话将再次返回到他们正在查看对话的导航控制器。然后从那里他们可以再次单击选项,转到配置文件,然后重复...

但是,如果我在ProfileViewController,我可以按"返回"那将会seg"回来"通过我写的自定义RightToLeft segue到MatchesNavigationController

因此,我可以进入ViewController堆栈在此实例中开始变得越来越大的实例。

当我这样做时(进入这个周期性的工作流程),我有一个我写的自定义LeftToRight segue因为我希望它看起来像用户,他们正朝着那个方向导航。

如何清理这些可以进入此循环导航类型的先前视图?

2 个答案:

答案 0 :(得分:1)

prepareForSegue:之前调用self.navigationController.popViewControllerAnimated(true)之前,它会在推送下一个之前从堆栈中释放当前视图控制器。

答案 1 :(得分:0)

在做了更多的搜索和挖掘之后,我意识到我想要做的事情比其他任何事情都更糟糕,我花了整个周末重构我的观点是如何布局和呈现的,并且只是在{{1}内部做了所有事情。并且只是按下/弹出一切应该如何完成,所以我将把这个作为公认的答案,因为这是我从一开始就应该做的事情。