如何正确切换 UIViews

Posted

技术标签:

【中文标题】如何正确切换 UIViews【英文标题】:How to properly switch UIViews 【发布时间】:2010-09-16 00:20:47 【问题描述】:

我想在我的应用程序中有多个视图,我可以在这些视图之间切换。

在也支持 UISplitViewController 的 UIView 之间切换的正确方法是什么? 是否有支持切换的方式,或者 Apple 的控制器类是否设计为仅 root 和 root?

我尝试过拥有一个根视图和根控制器,并交换子视图。其中一个子视图是 UISplitViewController。它不喜欢这种安排,也不能正确显示。未显示详细视图,主视图显示错误的方向和大小。

然后,我尝试在应用委托的 UIWindow 中管理添加和删除一个子视图。这在大多数情况下都有效。但是,在 applicationDidFinishLaunching 方法之后添加的视图显示设置不正确。他们大多看起来是正确的,但有时方向认为它的肖像,而实际上它的风景。此外,当我尝试显示弹出框时,它显示在不正确的位置。如果我改变方向,它会正确重绘。我也有一些随机实例,其中 UISplitViewController 视图没有完全显示,好像它的框架大小不正确。

衷心感谢任何建议。

【问题讨论】:

【参考方案1】:

applicationDidFinishLaunching 中,您的对象尚未完成从 NIB 加载。尝试改用viewDidLoad 方法。

在视图之间切换的用户界面是什么?如果这些视图之一表示用户进入然后退出的瞬态模式,请考虑使用模态视图。 (见presentModalViewController:animated:。)

我需要更多关于你正在做什么的详细信息才能更具体地回答。

【讨论】:

它的行为与您描述的相反。在 applicationDidFinishLaunching 期间加载的一个视图可以正常工作。相反,如果您在 applicationDidFinishLaunching 之后将该视图添加到窗口中,例如在延迟后使用执行选择器,则它会在方向和框架方面出现混淆。 从根本上说,我想尽我所能换掉 UISplitView。我还没有找到方法。通常的问题是,虽然 iPad 是面向物理的横向,但子视图认为它是纵向的。

以上是关于如何正确切换 UIViews的主要内容,如果未能解决你的问题,请参考以下文章

给uiview一个cornerRadius的正确方法

如何正确切换视图

延迟切换uiviews

如何正确切换到不同的 ViewController

如何正确处理位置服务切换

在 iphone sdk 上有效加载 uiviews