使用 poptoviewcontroller 弹出不同的视图控制器

Posted

技术标签:

【中文标题】使用 poptoviewcontroller 弹出不同的视图控制器【英文标题】:Poping different viewcontroller using poptoviewcontroller 【发布时间】:2011-09-21 05:33:11 【问题描述】:

我有一个包含三个viewcontrollers的应用程序

Mapviewrootviewcontroller

mapview -pushviewcontroller - listview,

listview - pushviewcontroller - mapview,

第一个条件

mapview -pushviewcontroller - 城市景观和 cityview - pushviewcontroller - mapview

第二个条件

listview -pushviewcontroller - 城市景观和 cityview - pushviewcontroller - listview

这样的视图控制器顺序

mapview-listview, mapview-cityview, 列表视图-城市视图

问题是我正在使用[self.navigationController popToRootViewControllerAnimated:YES]; 但它仅适用于第一个条件而不适用于第二个条件 当我在第二种情况下使用它时,它会再次显示地图视图

即。列表视图成功推送到城市视图,我想弹回列表视图,但它再次回到地图视图而不是列表视图

即使我也试试这个 [self popToViewControllerAtIndex:1 animated:YES];

但它又显示了同样的问题。

我已经尝试了几乎所有在论坛中找到的东西。

提前致谢!

【问题讨论】:

【参考方案1】:

要修改(弹出视图)导航堆栈,您可以使用以下方法:

    用指定的项目替换当前由导航控制器管理的视图控制器。

    - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated

    从导航堆栈中弹出顶视图控制器并更新显示。

    - (UIViewController *)popViewControllerAnimated:(BOOL)animated

    弹出堆栈中除根视图控制器之外的所有视图控制器并更新显示。

    - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

    弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。

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

要访问堆栈上的当前视图控制器,您可以使用@property(nonatomic, copy) NSArray *viewControllers

【讨论】:

以上是关于使用 poptoviewcontroller 弹出不同的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

弹出查看控制器

调用popToViewController后如何清除视图中的文本框

applicationDidEnterBackground 触发 popToViewController

popToViewController 生命周期

从 UIAlertView 弹出视图警报

navigationController popToViewController 不能在 swift 3 中工作