添加子视图,然后在应用程序的顶部显示它

时间:2013-08-16 20:37:54

标签: ios ipad modal-dialog uiwindow topmost

背景和目标:

在我现有的应用中,我正在尝试为用户提供语音留言功能。这个想法是可选地提供从应用程序中的任何地方到用户的语音消息的通用访问(受到facebook消息的启发)。到目前为止,我已经取得了部分成功,在显示我的迷你消息仪表板并点击其上打开了iPhone和iPad上的自定义消息(popover)视图。 ipad公司

我在应用程序keywindow上添加了我的迷你仪表板子视图,因此在应用程序中导航时可以看到所有视图的(顶部)。

[application.keyWindow addSubview:self.messageDashBoardVC.view];

这使得它甚至可以自动显示(开箱即用)甚至模拟对话框(大多数)在应用程序中呈现如下..

  

[self presentViewController:modelVC animated:YES completion:nil]

特定问题陈述:

然而.. 当视频控制器以模态显示

时,在 iPad
  

modalPresentationStyle = UIModalPresentationFormSheet

UIModalPresentationPageSheet 迷你仪表板隐藏在模态对话框(工作表)后面。但是,我希望用户在处理这些工作表时可以访问语音功能(迷你仪表板和弹出视图)。

我现有的应用程序使用了很多这样的模态对话框(工作表)。

一般问题陈述: 是否有任何可重复使用的组件/源代码可以做同样的事情,因为我认为方向处理对我的方法来说也是一个棘手/相当的工作?你用我的方法设想的任何其他问题?

2 个答案:

答案 0 :(得分:2)

我发现以上特定问题陈述取得了一些成功: -

模态视图显示(添加)到同一个窗口,所以我只是将我的迷你仪表板视图放在前面这样..

UIWindow *appDelegateWindow = [[[UIApplication sharedApplication] delegate] window];

UIView *miniView = (UIView *)[appDelegateWindow viewWithTag:12221]; // 12221 is tag of mini dashboard view.

[appDelegateWindow bringSubviewToFront:miniView];

然而,我仍然期待着您对我的方法的专家意见,并开始考虑采用这种方法可能会遇到的方向和其他潜在挑战的替代方法。

接下来 - 我正在努力将我的自定义弹出窗口视图放在模态工作表的前面。截至目前,点按迷你视图会打开邮件弹出窗口,但在模态表后面。

答案 1 :(得分:0)

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

MALoginViewController *login=[[MALoginViewController alloc]initWithNibName:@"MALoginViewController" bundle:nil];
 MANowPlayingViewController *nav=[[MANavigationController alloc]initWithRootViewController:home];
[self.window setRootViewController:nav];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

这里MANowPlayingViewController是UINavigationController的类。所以你必须为UINavigationController创建单独的类...然后将其设置为Window RootviewController ..

你在UINavigationController类中提供的任何内容都将显示你应用程序中的所有页面..你可以处理这个类中的所有常用代码。例如,如果你在该NavigationBar上添加UIButton,它将显示在所有类中......

感谢..