检测打开 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 类?