Split VIEw Controller
类UISplitVIEwController是一种容器视图控制器用来管理两块信息。第一块面板的宽度固定为320points而高度则为窗口的可视高度。第二志面板则充满了剩余的可视空间。在landscape方向上,splitvIEwController显示为靠在一起的两块面板其中有一个分隔块。在portrait方向上,则只显示第二块面板并提供toolbar按钮用来使用popover来显示第一块面板。如下图所示:
Split视图的面板包括的内容是通过你所提供vIEwcontroller进行管理。因为面板包括了应用程序指定的内容,如何管理两个面板之间的交互是由开发者决定。但对于设备的旋转或其它系统相关的行为则是由splitcontroller控制。
SplitvIEwcontroller必须是你所创建所有界面的根。也就是说,你必须将UISplitVIEwController所包含的视图作为应用程序窗口的根视图。然后splitvIEw controller的面板可能包括navigationcontroller,Tabbar controller或其它类型的vIEwcontroller。
最容易将splitvIEw controller集成进应用程序的方法是新建一个工程。XCode中的SplitVIEw-based application模板是创建splitvIEw controller的最好开始。所有要创建splitvIEw controller所需的条件都已俱备。你所要做的就是修改vIEwcontroller数组来显示你自己要展示的内容。对这些数组的修改对于iphone应用来说虚拟的。所不同的只是你必须有更多的屏幕区域来显示更多的内容。尽管如此,你也可以为你有的应用集成splitvIEw controller。
通过Interfacebuilder创建splitvIEw controller
如果你不想从SplitVIEw-basedapplication模板中新建一个split工程,你仍然可以为你的用户界面增加splitvIEw controller。Interfacebuilder库中包含了splitvIEw controller可以添加到已有的nib中。当添加一个splitvIEw controller,你通常是将其添加到应用程序的主nib文件中。这是因为splitvIEw controller通常是作为你应用程序窗口的最上层的vIEw并可以在启动阶段进行加载。
为应用程序主nib文件添加splitvIEwcontroller:
1.打开应用程序的主nib文件
2.拖动一个splitvIEw controller到nib文件窗口中。(splitvIEwcontroller对象包含了两个面板所对应的vIEwcontroller)
3.在应用程序代理中增加一个splitvIEw controller的outlet并与nib文件中控件进行连接
4.在应用程序代理类的application:dIDFinishLaunchingWithOptions:方法中将splitvIEw controller的包含的视图作为窗口的主视图
[windowaddSubvIEw:mySplitVIEwController.vIEw];
5.对于splitvIEw controller面板所包含的vIEwcontroller:
使用IDentityinspector设置vIEwcontroller所对应的类名
在attributeinspector中,设置vIEwcontroller中视图所对应的nib文件
设置包括在splitvIEw controller中两个面板中的vIEwcontroller是开发者的责任。你可以像在应用程序中配置其它vIEwcontroller一样配置它们。设置vIEwcontroller对应的类名,以及vIEwcontroller对应视图的nib文件。剩下的工作就是根据不同的vIEwcontroller进行相应的配置。
编程方式创建splitvIEw controller
要以编程方式创建splitvIEwcontroller,先创建UISplitVIEwController类的一个实例并为其两个面板设置对应的vIEwcontroller。因为splitvIEw controller的内容只由对应的vIEwcontroller提供,所以你不需要在创建splitvIEwcontroller时为其指定nib文件。因此你可以使用init方法对其进行初始化。下面的代码示例了如何在应用程序启动时创建并配置一个splitvIEwcontroller。你可以用自己定义的vIEwcontroller来代替缺省的在你应用程序中显示的第一和第二个vIEwcontroller。
[plain]vIEw plaincopy
1. -(BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
2. MyFirstVIEwController* firstVC = [[[MyFirstVIEwController alloc] initWithNibname:@"FirstNib" bundle:nil] autorelease];
3. MySecondVIEwController* secondVC = [[[MySecondVIEwController alloc] initWithNibname:@"SecondNib" bundle:nil] autorelease];
4.
5. UISplitVIEwController* splitVC = [[UISplitVIEwController alloc] init];
6. splitVC.vIEwControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];
7.
8. [window addSubvIEw:splitVC.vIEw];
9. [window makeKeyAndVisible];
10.
11. return YES;
12. }
在splitvIEw中支持设备转动
splitvIEw controller信赖于其两个面板中的vIEwcontroller来决定是否支持设备的转动。如果一个或两个面板中的vIEwcontroller不支持设备所转动到的新方向,则显示不会有任何改变。这条原则在portrait方向,当第一个vIEwcontroller隐藏时仍然适用。所以你必须为两个面板中的vIEwcontroller都重载shouldautorotatetoInterfaceOrIEntation:方法并返回YES来支持所有方向的转动。
当设备方向发生改变时,splitvIEwcontroller自动处理大部分转动行为。特别要指出,splitvIEwcontroller会自动隐藏第一个面板当设备方向转动为portrait时并在设备转动到landscape方向时自动显示第一个面板。
如果你想在portrait方向时显示第一个面板,你就要使用到代理对象。当设置转动到portrait方向时,splitvIEwcontroller提供其代理一个按钮,点击该按钮,将在popover中显示第一个面板。你应用程序所要完成的是在splitVIEwController:willHIDeVIEwController:withbarbuttonItem:forPopoverController:代理方法中将该按钮添加到应用的toolbar上并在splitVIEwController:willShowVIEwController:invalIDatingbarbuttonItem:代理方法中移除该按钮。下面的代码由SplitVIEw-basedapplication模板提供。这些方法在detailvIEw controller中定义,用来管理SplitVIEw controller的第二个面板。
[plain]vIEw plaincopy
1. // Called when rotating to a portrait orIEntation.
2. - (voID)splitVIEwController: (UISplitVIEwController*)svc willHIDeVIEwController:(UIVIEwController *)aVIEwController withbarbuttonItem:(UIbarbuttonItem*)barbuttonItem forPopoverController: (UIPopoverController*)pc {
3. barbuttonItem.Title = @"Root List";
4. NSMutableArray *items = [[toolbar items] mutablecopy];
5. [items insertObject:barbuttonItem atIndex:0];
6. [toolbar setItems:items animated:YES];
7. [items release];
8. self.popoverController = pc;
9. }
[plain]vIEw plaincopy
1. // Called when the vIEw is shown again in the split vIEw, invalIDating the button and popover controller.
2. - (voID)splitVIEwController: (UISplitVIEwController*)svc willShowVIEwController:(UIVIEwController *)aVIEwController invalIDatingbarbuttonItem:(UIbarbuttonItem *)barbuttonItem {
3. NSMutableArray *items = [[toolbar items] mutablecopy];
4. [items removeObjectAtIndex:0];
5. [toolbar setItems:items animated:YES];
6. [items release];
7. self.popoverController = nil;
}
总结以上是内存溢出为你收集整理的iPad页面管理——Split ViewController全部内容,希望文章能够帮你解决iPad页面管理——Split ViewController所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)