从AppDelegate中将子视图添加到当前屏幕视图

时间:2013-11-19 19:39:22

标签: ios iphone uinavigationcontroller

我正在使用一些预先存在的代码,坦率地说,我有点失落。

我的目标是创建一个视图,当用户返回到应用程序时,该视图显示在屏幕的下半部分。此视图强制用户重新输入密码作为验证。我已被告知AppDelegate的{​​{1}}是处理此过程的好地方。我遇到的问题是,屏幕的上半部分需要显示用户之前在应用程序变为非活动状态之前查看的视图。这样做的最佳方式是什么?

我一直在努力做的事情:

我制作了一个名为applicationDidBecomeActive的视图控制器并制作了相应的XIB。在passwordVerificationViewController我尝试:

applicationDidBecomeActive

这不起作用。它不起作用的原因是因为UIViewController *myCurrentController = (UIViewController *)navigationController.visibleViewController; verifyPasswordViewController = [[VerifyPasswordViewController alloc] initWithNibName:@"VerifyPasswordViewController" bundle:nil]; [myCurrentController.view addSubview:verifyPasswordViewController.view]; 没有返回屏幕上的viewController,正如我所预期的那样。我也试过navigationController.visibleViewController,但它给了我相同的结果。

另外值得注意的是,应用程序中的所有视图控制器都是通过navigationController.topViewController打开的,并由导航控制器显示。我尝试使用presentViewController属性,但这总是返回null。

如果我能弄明白如何正确引用屏幕上的当前视图,我的工作方式是否有效?有没有更好的方法来实现我的目标?

编辑:使用Helge Becker的方法解决。也许不是最干净的方式,但我按照他的建议设置了通知中心。然后我将notificationHandler包装在带有条件的if语句中,(self.isViewLoaded&& self.view.window)作为查看视图控制器是否在屏幕上可见的方法。

1 个答案:

答案 0 :(得分:0)

在app delegate方法中发布通知。

然后让viewcontrollers注册通知。 这将允许所有viewcontroller respnd到任何qpp条件更改。

Usualy变得活跃并且进入背景就足够了。