应用程序中多个 UIWindow 的最佳实践

Posted

技术标签:

【中文标题】应用程序中多个 UIWindow 的最佳实践【英文标题】:Best Practices for more than one UIWindow in an application 【发布时间】:2012-06-01 18:32:58 【问题描述】:

专家,请分享在当前窗口顶部添加 UIWindow 时必须注意的最佳方法和实践。(Window1)我有一种情况,我已将视图“A”的方向锁定为纵向视图控制器。然后我创建一个新的 UIWindow 并将其设置为键和可见。这个新 UIWindow 的根视图控制器又是一个支持所有方向的视图控制器。我遇到的问题是,每当我将前一个窗口(比如 window1)作为键并再次可见时,并尝试旋转设备,即使视图保持锁定到特定方向(比如纵向),状态栏也在旋转,看起来非常奇怪。

【问题讨论】:

为什么要使用多个 UIWindow?我从来不需要拥有多个 UIWindow。你为什么要这样做真的没有道理。你能解释一下你想用 2 个窗口完成什么吗? 您不应使用多个 UIWindow,您是否要删除第二个 UIWindow?您在第一个窗口上添加了第二个窗口?你的问题不是很清楚,在这种情况下你可以-resignKeyWindow,但我认为这根本不是一个好习惯 我想通过自定义视图来模拟 uiAlertview。那就是我遵循的方法 你不需要一个窗口。自定义视图就可以了。 我同意,事实上,即使是 Apple 关于该主题的文档也强烈反对多窗口应用程序。他们声明一个应用程序应该有 1 个窗口和多视图(如果应用程序需要)。 【参考方案1】:

我认为将自定义警报旋转到应用程序不支持的方向是一个坏主意。反正。为了防止状态栏旋转,您应该删除第二个窗口

[alertWindow setHidden:YES]; 
[alertWindow release]; 
alertWindow=nil;

在您的警报消失后。

你也可以考虑点赞:

https://github.com/eaigner/CODialog https://github.com/gpambrozio/BlockAlertsAnd-ActionSheets https://github.com/kyoshikawa/ZPopoverController https://github.com/TomSwift/TSAlertView

【讨论】:

以上是关于应用程序中多个 UIWindow 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

在多个项目中使用相同模型的最佳实践是啥?

同时使用多个 NSURLConnections - 最佳实践

处理多个表的最佳实践

为多个数据库关系配置 Hibernate-Spring 的最佳实践是啥?

如何处理应用内计费库中的多个用户? (最佳实践)

等待多个线程时的最佳实践 - 时间、计数还是其他?