
尽管它不是一个实际的vIEwcontroller,UIPopoverController类用来管理的显示。你可以使用popovercontroller对象来展示内容,使用popover,你可以让一个可见的层浮在应用程序的主窗口之上。Popovers提供了一个轻量级的方法用来显示或收集用户信息,通常在以下情况时使用:
显示屏幕上一个对象的信息
用来管理经常访问的工具或配置项
用来显示一组要在你某个视图中对象上执行的命令
当设备在portrait方向时,用来显示原来landscape方向时split视图中显示的内容
使用Popover来处理命令通常比用ModelvIEw更为常见。在iPad应用程序中,modelvIEw用来需要用户显式的接受或拒绝某些动作或信息时。例如:你可以使用要求用户输入密码,验证完成后才能进行下面的 *** 作。在其它情况下,通常可以使用来代替。的优点在于它显示的时候不会覆盖整个屏幕并且只要在视图之外点击下就能使其消失。这可为用户提供不需要交互但提供信息或一些额外的功能。
注:你应该先关闭一个然后再显示一个model视图。
下图显示了当设备在视图中显示的内容。选择一个play可以在主视图中显示与该相关的内容。
创建并显示Popovers
所显示的内容是从你所指定的中继承。可以展示各种类型的,包括:自定义的tablevIEw controller,navigation controller,tab barcontrollers。当你准备在中显示时,按下面的 *** 作:
创建一个的实例并使用你要展示的对其进行初始化
指定的大小,你可以通过两种方式指定:
为你要显示在中的的contentSizeforVIEwInPopover属性指定一个值
设置popovercontroller popoverContentSize 属性
当你展示一个时,它就与界面中的某一部分发生了联系。通常与toolbarbutton发生联系,所以presentPopoverFrombarbuttonItem:permittedArrowDirections:animated:方法是从应用程序toolbar显示的便捷方式。你也可以使用presentPopoverFromrect:inVIEw:permittedArrowDirections:animated:方法将与任一个视图相关联。
通常从其显示的属性中获得初始大小,该属性的缺省值为320×1100像素。你可以自定义通过为该属性赋值以改变的大小。你还可以通过修改popoverContentSize属性以达到相同的目的。如果你更改了在中显示的视图,则属性也会被新展示视图的大小所覆盖。当显示时改变其展示的视图或的大小,则结果会以动画的效果加以展示。你还可以通过setPopoverContentSize:animated:方法更改的大小。
注:在屏幕上实际的显示位置取决于其自己并基于几点要素,包括你所要显示的大小,你要做为popvIEw显示源的button或视图的位置以及显示箭头方向。
下面的代码展示了一个简单的动作方法:当用户点击上按钮时显示一个。对象被要显示的其的对象所持有,的大小被设置为其所显示的视图的大小,但两种不必需相等。如果两种不相等,则必须使用scrollvIEw来保证用户可以看到中的所有内容。
- (IBAction)toolbarItemTapped:(ID)sender{ MyCustomVIEwController* content = [[MyCustomVIEwController alloc] init]; UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentVIEwController:content]; aPopover.delegate = self; [content release]; // Store the popover in a custom property for later use. self.popoverController = aPopover; [aPopover release]; [self.popoverController presentPopoverFrombarbuttonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];} Popovers在用户点击Popover视图以外的区域时会自动消失。在Popover内部进行点击不会使其自动消失,但是你可以调用dismisspopoverAnimated:方法使其消失。你可能需要在用户选择了vIEwcontroller中的某项或执行某个动作,需要将在屏幕上消失时调用该方法。要使用该方法,你必须将popovercontroller对象保存在其显示的能访问的地方,系统并不为你提供当前所显示popover的引用。
声明代理
当用户点击视图以外的区域使自动消失时,popover自动通知其代理该事件的发生。如果你提供了代理对象,则你可以通过该对象保持已消失的或对于消失执行额外的 *** 作。代理方法popoverControllerShoulddismisspopover:可以让你控制是否是否真的需要消失。如果代理没有定义该方法或者你将声明的该方法返回YES,则使消失并发送popoverControllerDIDdismisspopover:方法给其代理。
在大多数情况下,你根本不需要声明代理方法。这个代理方法通常使用在关闭一个可能会引起错误中。比起让该方法返回NO,更好的方法是避免设计关闭时却因为条件未满足而需该继续显示的情况,当有这种情况时最好使用ModalvIEw来代替。
当调用popoverControllerDIDdismisspopover:代理方法时,已被从屏幕上移除。在这个时候,如果你不想再使用该popovercontroller则可将其释放。你还可通过这个方法来更新用户界面或应用程序状态。
管理应用程序中的提示
当你编写相关代码时请考虑以下问题:
如果通过程序方式关闭,则你需要一个指向的引用。获得这个引用的唯一方法是你自己对其进行保存,通常在所显示的中进行保存。这个 *** 作可以保证其所显示的可以在用户进行相关 *** 作时关闭popover
Popovercontroller可以被重用。可以将原先创建的进行缓存而不是重新建个新的。的可塑性很高,你可以为其指定不同的vIEwcontroller或每次使用时对其重新进行配置。
总结当显示一个时,为permittedArrowDirections参数指定UIPopoverArrowDirectionAny常量可以使箭头指向任一方向。指定该值可以让UIKit以最灵活的方式显示或控制其大小。如果你指定了某个确定的方法,则可能会在显示之前对其大小进行压缩。
以上是内存溢出为你收集整理的iPad页面管理——Popovers全部内容,希望文章能够帮你解决iPad页面管理——Popovers所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)