UIView侧边栏始终位于顶部

时间:2012-01-11 13:40:20

标签: ios layout uiview uiviewcontroller sidebar

我正在开发一个iPad应用程序,我需要创建一个始终位于其他视图之上的UIView

A是该区域(将其视为一种侧边栏),我需要创建一个UIViewController,该视图始终位于顶部。相反,B是UIViewController(及其视图)可以更改的内容区域:根据几个按钮操作(在A视图中),可以删除当前可见内容(在本例中为控制器B及其查看)并用他们的视图显示其他控制器(C,D,E等)。

我为我的应用程序创建了所有元素但是我在顶部维护A的视图时遇到了问题,同时实现了用于改变内容区域的逻辑。作为要求我需要A总是重叠B.换句话说,B的一部分(左部分)总是在A的区域之下.B总是扩展整个设备屏幕。

你可以给我一些建议吗?

我做了两个配置,但我遇到了问题。

首次配置

在第一个中,我为A创建了UIViewController(称为SideBarController)。我将SideBarController视图添加到UIWindow(在应用程序委托中)。然后我为B创建了UIViewController(称为HomeViewController),我将其添加为rootViewController用于我的应用。

此解决方案可能是有效的,因为我可以通过我的应用程序委托来改变内容区域(设置新的rootViewController),但SideBarController始终保持在当前的可见视图下。

第二次配置

在第二个中,我创建了一个UIViewController(称为MainViewController),我将其添加为我的应用程序的rootViewController。然后在MainViewController内,我为A创建了UIViewController(称为SideBarController),并将SideBarController视图添加到MainViewController。然后内容区域已填充,为B创建UIViewController(称为HomeViewController)并将其添加到MainViewController

侧边栏始终位于顶部,但我无法动态更改MainViewController内的内容区域。如何访问内容区域并进行更改?

注意我知道UIKit上的标准组件,但由于用户规范,我需要实现这样的解决方案。

1 个答案:

答案 0 :(得分:1)

我首先尝试在UIPopoverController中实现您的侧边栏。它的设计非常适合这类问题,您可以对其进行广泛的自定义以满足您的UI需求。如果UIPopoverController导致您遇到某种问题,我会将侧边栏放在自己的UIWindow中并将其悬浮在主窗口上。

修改

就我个人而言,我自己会选择popover,因为它更适合这类问题。我想到的另一个想法是我UIView直接添加到UIWindow[view window],从任何视图中都可以获得主要的想法。请记住,UIWindow只是一种特殊的UIView。这个和UIWindow解决方案的问题在于你必须做自己的旋转逻辑,如果你有自动旋转,它可能比听起来更棘手。如果您可以使用它,UIPopoverController可以非常干净地自动处理所有这些。

如果您追求UIWindow,请参阅“查看编程指南”的Windows部分:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingWindows/CreatingWindows.html