2012-01-11 33 views
1

我开发的iPad应用,我需要创建一个UIView,就是始终在顶部对于其他意见。UIView的侧边栏总在最前面

A为面积(认为它作为一种工具条),我需要建立一个UIViewController其观点始终保持在最前面。 B代替UIViewController(以其视图)可以改变的内容区域:取决于几个按钮操作(在A的视图内),可以移除当前可见内容(在这种情况下为控制器B及其视图)并显示其他控制器(C,D,E等)和他们的观点。

我创造了我的应用程序的所有元素,但我有问题,维持A的上俯视图,并在同一时间,实现用于dinamcally更改内容区域的逻辑。作为要求,我需要A始终与B重叠。换句话说,B(左侧部分)的一部分总是在A的区域下.B总是延伸整个设备屏幕。

你能给我一些建议吗?

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

第一配置

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

这种解决方案可能是一个有效的,因为我可以通过我的应用程序委托dinamically更改内容区域(设置新的rootViewController),但SideBarController当前visble视图下始终保持。

其次配置

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

侧边栏始终保持在最前面,但我有困难的内MainViewController动态改变内容区域。如何访问内容区域并更改它?

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

回答

1

我会通过努力实现在UIPopoverController侧边栏开始。它的设计非常适合这类问题,并且可以对其进行广泛的定制以满足您的用户界面需求。如果UIPopoverController导致您遇到某种问题,我会将边栏放在其自己的UIWindow中,并将其悬浮在主窗口上方。

编辑

个人而言,我会去为自己酥料饼,因为它更对这种问题的建造。我想到的另一个想法,我过去使用的是UIView,您直接添加到UIWindow(从任何视图都可以得到主要的[view window])。请记住,UIWindow只是一种特殊的UIView。这个问题和UIWindow解决方案是,你将不得不做自己的旋转逻辑,这可能比听起来如果你有自动旋转更棘手。如果你可以使用它,UIPopoverController可以非常干净地自动处理所有这些。

如果你追求UIWindow看到的视图编程指南的窗口部分:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingWindows/CreatingWindows.html

+0

谢谢您的答复。你能否给我提供第二种解决方案的建议?如何将侧边栏放入另一个“UIWindow”?我认为第一个可能很复杂。谢谢。 – 2012-01-11 14:04:32

+0

谢谢。我不知道如何遵循。也许'UIPopoverController'可能是正确的。在我看来,这个问题可能是不可能定制这个控制器的外观。例如,在iOS 4中,无法自定义边框。我不知道iOS 5定制是否发生了变化。您是否有任何代码可以分享您过去使用的解决方案?谢谢。 – 2012-01-11 19:04:34

+0

你是对的。我在谈论的部分是在iOS 5('popoverBackgroundViewClass')中添加的。这给你留下了一个附加到顶层的窗口或视图。我会在'[[[view window] rootViewController]视图]中添加一个'UIView',看看它是否适合你。如果不是,直接将它添加到'[查看窗口]'。 – 2012-01-11 20:26:19