如何在当前视图控制器上添加模态视图?

Posted

技术标签:

【中文标题】如何在当前视图控制器上添加模态视图?【英文标题】:How to add a modal view onto current view controller? 【发布时间】:2012-07-16 13:47:15 【问题描述】:

我有这个代码:

-(void)applicationDidBecomeActive:(UIApplication *)application 
JUnlockController *passcodeView = [[JUnlockController alloc] init];
[self.navigationController presentModalViewController:passcodeView animated:YES];

问题是,当我在我的应用程序中打开一个模态视图控制器时,它不会出现在它上面。我希望能够找出用户正在查看的当前视图控制器,以便将其显示在上面。

【问题讨论】:

取自您的代码,据我所知,您提供了一个“香草”,意思是一个空的视图控制器。您如何定义该视图控制器中的视图?在 init 方法中还是在 loadView 方法中?还是在 Interface Builder 中? 显示什么而不是您要显示的视图? 【参考方案1】:

代替:

[self.navigationController presentModalViewController:passcodeView animated:YES];

使用:

[self presentModalViewController:passcodeView animated:YES];

【讨论】:

【参考方案2】:

如果您的应用仅由该导航控制器导航,您可以询问哪个 viewController 可见:

[self.navigationController.visibleViewController presentModalViewController:passcodeView animated:YES];

否则,您可以利用UIApplicationDidBecomeActiveNotification,让您的所有视图控制器扩展一个自定义类,该类在viewWillAppear 上为此注册并在viewWillDissapear 中取消注册;并在您的自定义基类中实现显示模式的回调。

edit 请注意,这假设您的应用委托(由您设置)中有一个self.navigationController。您可能需要改用 self.window.rootViewController 之类的东西。

【讨论】:

以上是关于如何在当前视图控制器上添加模态视图?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:如何从左到右制作当前的模态视图控制器动画

如何以模态方式将视图添加到不在视图层次结构中的另一个视图 iOS

如何在模态呈现的视图控制器上执行呈现模态序列?

iPad模态表单无论如何都会占据整个屏幕

iOS - 半透明模态视图控制器

如何从一个模态视图控制器添加新的表格单元格数据?