我应该如何弹出到特定的视图控制器?

Posted

技术标签:

【中文标题】我应该如何弹出到特定的视图控制器?【英文标题】:How should I pop to a specific view controller? 【发布时间】:2012-07-25 17:43:39 【问题描述】:

我正在创建一个通用的 ios 应用程序,它本质上是一个长订单页面。用户从购物车屏幕开始,然后通过一系列 4 个不同的屏幕(不同的 VC)线性前进(使用 UINavigationController)。一旦他们到达最后一个屏幕,新闻提交,我希望应用程序将用户带回购物车屏幕。但是,购物车屏幕不是根视图控制器,因此我不能使用[self.navigationController popToRootViewControllerAnimated:YES];。我应该如何做到这一点?人们通常如何做到这一点?

我想到的一些想法是:

1) 维护一个全局变量,即我要弹出的 VC?例如,每当用户进入购物车页面时,我都会将购物车 VC 设置为这个全局变量的值。

2) 一旦我在最后一页,循环遍历导航控制器堆栈上的 VC 堆栈,然后当我找到我想要的类型之一(同一类)时,我会弹出它。

有没有更好的方法来做到这一点?我缺少一些神奇的 API 吗?人们在这种情况下会做什么?

【问题讨论】:

我认为你的第二种方法很好用。 【参考方案1】:

用途:

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

也就是说,找到您的购物车对象并将其用作 viewController 参数。

【讨论】:

很久没用Cocoa了,忘了你也可以这样。

以上是关于我应该如何弹出到特定的视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有动画的情况下弹出到视图控制器

从模态弹出到根视图控制器

如何在弹出到根视图 Swift 后立即更改选项卡?

如何关闭视图控制器并快速弹出到根视图控制器?

SwiftUI - 如何在 SwiftUI 中弹出到特定视图?

弹出到初始视图控制器