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必须是你所创建所有界面的根。也就是说,你必须将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所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存