我正在开发一个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上的标准组件,但由于用户规范,我需要实现这样的解决方案。
答案 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