iPad页面管理——Split ViewController

iPad页面管理——Split ViewController,第1张

概述Split View Controller 类UISplitViewController是一种容器视图控制器用来管理两块信息。第一块面板的宽度固定为320points而高度则为窗口的可视高度。第二志面板则充满了剩余的可视空间。在landscape方向上,splitviewController显示为靠在一起的两块面板其中有一个分隔块。在portrait方向上,则只显示第二块面板并提供toolbar按 Split VIEw Controller

UISplitVIEwController是一种容器视图控制器用来管理两块信息。第一块面板的宽度固定为320points而高度则为窗口的可视高度。第二志面板则充满了剩余的可视空间。在landscape方向上,splitvIEwController显示为靠在一起的两块面板其中有一个分隔块。在portrait方向上,则只显示第二块面板并提供toolbar按钮用来使用popover来显示第一块面板。如下图所示:

Split视图的面板包括的内容是通过你所提供vIEwcontroller进行管理。因为面板包括了应用程序指定的内容,如何管理两个面板之间的交互是由开发者决定。但对于设备的旋转或其它系统相关的行为则是由splitcontroller控制。


SplitvIEwcontroller必须是你所创建所有界面的根。也就是说,你必须将所包含的视图作为应用程序窗口的根视图。然后splitvIEw controller的面板可能包括navigationcontrollerTabbar controller或其它类型的


最容易将集成进应用程序的方法是新建一个工程。XCode中的SplitVIEw-based application模板是创建的最好开始。所有要创建所需的条件都已俱备。你所要做的就是修改数组来显示你自己要展示的内容。对这些数组的修改对于iphone应用来说虚拟的。所不同的只是你必须有更多的屏幕区域来显示更多的内容。尽管如此,你也可以为你有的应用集成

通过Interfacebuilder创建splitvIEw controller

如果你不想从模板中新建一个split工程,你仍然可以为你的用户界面增加库中包含了可以添加到已有的nib中。当添加一个,你通常是将其添加到应用程序的主文件中。这是因为通常是作为你应用程序窗口的最上层的vIEw并可以在启动阶段进行加载。

为应用程序主文件添加

1.打开应用程序的主文件

2.拖动一个文件窗口中。(对象包含了两个面板所对应的

3.在应用程序代理中增加一个outlet并与文件中控件进行连接

4.在应用程序代理类的application:dIDFinishLaunchingWithOptions:方法中将的包含的视图作为窗口的主视图

[window addSubvIEw:mySplitVIEwController.vIEw];

5.对于面板所包含的

使用IDentityinspector设置所对应的类名

attributeinspector中,设置中视图所对应的文件

设置包括在中两个面板中的是开发者的责任。你可以像在应用程序中配置其它一样配置它们。设置对应的类名,以及对应视图的文件。剩下的工作就是根据不同的进行相应的配置。

编程方式创建splitvIEw controller

要以编程方式创建,先创建类的一个实例并为其两个面板设置对应的。因为的内容只由对应的提供,所以你不需要在创建splitvIEwcontroller时为其指定文件。因此你可以使用init方法对其进行初始化。下面的代码示例了如何在应用程序启动时创建并配置一个。你可以用自己定义的来代替缺省的在你应用程序中显示的第一和第二个

-(BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions {	MyFirstVIEwController* firstVC = [[[MyFirstVIEwController alloc] initWithNibname:@"FirstNib" bundle:nil] autorelease];    	MySecondVIEwController* secondVC = [[[MySecondVIEwController alloc] initWithNibname:@"SecondNib" bundle:nil] autorelease];        	UISplitVIEwController* splitVC = [[UISplitVIEwController alloc] init];     	splitVC.vIEwControllers = [NSArray arrayWithObjects:firstVC,secondVC,nil];       	 [window addSubvIEw:splitVC.vIEw]; 	[window makeKeyAndVisible];    		return YES;}

splitvIEw中支持设备转动

信赖于其两个面板中的来决定是否支持设备的转动。如果一个或两个面板中的不支持设备所转动到的新方向,则显示不会有任何改变。这条原则在方向,当第一个隐藏时仍然适用。所以你必须为两个面板中的都重载shouldautorotatetoInterfaceOrIEntation:方法并返回YES来支持所有方向的转动。

当设备方向发生改变时,自动处理大部分转动行为。特别要指出,会自动隐藏第一个面板当设备方向转动为时并在设备转动到方向时自动显示第一个面板。


如果你想在方向时显示第一个面板,你就要使用到代理对象。当设置转动到方向时,提供其代理一个按钮,点击该按钮,将在中显示第一个面板。你应用程序所要完成的是在splitVIEwController:willHIDeVIEwController:withbarbuttonItem:forPopoverController:代理方法中将该按钮添加到应用的上并在splitVIEwController:willShowVIEwController:invalIDatingbarbuttonItem:代理方法中移除该按钮。下面的代码由模板提供。这些方法在detailvIEw controller中定义,用来管理SplitVIEw controller的第二个面板。

// Called when rotating to a portrait orIEntation. - (voID)splitVIEwController: (UISplitVIEwController*)svc willHIDeVIEwController:(UIVIEwController *)aVIEwController withbarbuttonItem:(UIbarbuttonItem*)barbuttonItem forPopoverController: (UIPopoverController*)pc {    barbuttonItem.Title = @"Root List";     NSMutableArray *items = [[toolbar items] mutablecopy];     [items insertObject:barbuttonItem atIndex:0];     [toolbar setItems:items animated:YES];     [items release];     self.popoverController = pc;}

// Called when the vIEw is shown again in the split vIEw,invalIDating the button and popover controller.- (voID)splitVIEwController: (UISplitVIEwController*)svc willShowVIEwController:(UIVIEwController *)aVIEwController invalIDatingbarbuttonItem:(UIbarbuttonItem *)barbuttonItem {    NSMutableArray *items = [[toolbar items] mutablecopy];     [items removeObjectAtIndex:0];     [toolbar setItems:items animated:YES];     [items release];    self.popoverController = nil;}
总结

以上是内存溢出为你收集整理的iPad页面管理——Split ViewController全部内容,希望文章能够帮你解决iPad页面管理——Split ViewController所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1093618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存