检测打开 uiviewcontroller 的父母

Posted

技术标签:

【中文标题】检测打开 uiviewcontroller 的父母【英文标题】:detect the parent who open uiviewcontroller 【发布时间】:2015-02-22 07:31:07 【问题描述】:

我有两个不同的场景调用同一个 uiviewcontroller, 场景1: 在主 uiviewcontroller 中单击一个按钮会创建一个虚拟导航器并将其呈现如下:

UINavigationController* dummyNavigation = [[UINavigationController alloc]init];
[dummyNavigation addChildViewController:bViewController];
[self presentViewController:dummyNavigation animated:NO completion:NULL];

场景 2: 在主 uiviewcontroller 中单击一个按钮,在其中打开一个 uitableviewcontroller 每次单击一行打开bViewController,如下所示:

[self.navigationController pushViewController:bViewController animated:NO];

我已经将bViewController的导航栏设置为隐藏了

[self.navigationController setNavigationBarHidden:YES];

并创建了一个按钮来用这段代码替换导航的后退按钮

[self dismissViewControllerAnimated:YES completion:NULL];

问题:在这两种情况下,后退按钮代码都会返回到主 uiviewcontroller,但在场景 2 中,它预计会返回到 uitableviewcontroller

【问题讨论】:

【参考方案1】:

在关闭时检查,如果它在导航控制器中则弹出,否则关闭。

if (self.navigationController) 
    [self.navigationController popViewControllerAnimated:YES];
 else 
    [self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

您的答案不正确,因为if (self.navigationController) 总是正确 在场景 1 中有一个 dummyNavigation 而场景 2 它是 uitableviewcontroller 的导航控制器

以上是关于检测打开 uiviewcontroller 的父母的主要内容,如果未能解决你的问题,请参考以下文章

iOS Dev - 如何检测用户通过按“返回”访问此 UIViewController

如何检测 UIViewController 外部的点击/触摸

如何检测 iOS UIViewController 是不是被交互或触摸

如何检测 UIViewController 内的 UITableView 类?

检测 UIAlertController 何时被另一个 UIViewController 解除

如何打开所有jstree节点(父母和孩子)