IOS8开发指南学习笔记
2015-06-25 06:31
716 查看
19.1.4 响应用户关闭弹出框
要在弹出框关闭时获取交换信息,需要遵守UIPopoverControllerDelegate协议。该协议提供方法popoverControllerDidDismissPopover,可以通过它响应弹出框关闭。在这个方法中还可以获取弹出框的内容视图控制器,并访问其任何属性。
实现UIPopoverControllerDelegate协议
首先将一个类声明为遵守该协议。小型项目中很可能是显示弹出框的类——ViewController,因此需要编辑ViewController.h将@interface行修改如下:
@interface ViewController:UIViewController<UIPopoverControllerDelegate>;接下来需要更新控制弹出框的UIPopoverController,将其Delegate属性设置为遵守该协议的类。在处理提醒视图时需要创建提醒视图实例,并设置其delegate属性。要设置弹出框的委托,必须实现方法prepareForSegue:sender以访问“隐藏”的UIpopoverController,这是由Xcode和Interface builder自动为我们创建的。prepareForSegue:sender方法在切换即将发生时会自动被调用,通过传递给这个方法的参数segue,可以访问切换涉及的源视图控制器和目标视图控制器,当切换为弹出切换时,也可以使用该参数来获取幕后的UIPopoverController实例,例如下面的代码提供了一种可能的解决方法:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.idertifier isEqualToString:@"toEditorPopover"])
{
((UIStoryboardPopoverSegue *)segue).popoverController.delegate=self;
}
}
上述代码中第二行首先检验发生的切换是弹出切换,第三行将segue转换为UIStoryboadSegue子类UIStoryboardPopoverSegue的对象,它用于表是弹出切换,然后便可以通过popoverController获取UIPopoverController实例;并将其delegate属性设置为当前类self。这样当弹出框关闭时会调用ViewController.m中的方法popoverControllerDidDismissPopover,剩下的工作就是实现这个方法。
方法popoverControllerDidDismissPopover可以接受一个参数,通过此参数帮助显示弹出框的UIPopoverController。通过这个对象可以访问属性contentViewController,可以获取弹出框的内容视图控制器,进而通过它来访问我们需要的任何属性。
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
NSString *newEmail;
newEmail = ((EditorViewCOntroller *)popoverController.contentViewController).emailField.text;
self.emailLabel.text = newEmail;
}
要在弹出框关闭时获取交换信息,需要遵守UIPopoverControllerDelegate协议。该协议提供方法popoverControllerDidDismissPopover,可以通过它响应弹出框关闭。在这个方法中还可以获取弹出框的内容视图控制器,并访问其任何属性。
实现UIPopoverControllerDelegate协议
首先将一个类声明为遵守该协议。小型项目中很可能是显示弹出框的类——ViewController,因此需要编辑ViewController.h将@interface行修改如下:
@interface ViewController:UIViewController<UIPopoverControllerDelegate>;接下来需要更新控制弹出框的UIPopoverController,将其Delegate属性设置为遵守该协议的类。在处理提醒视图时需要创建提醒视图实例,并设置其delegate属性。要设置弹出框的委托,必须实现方法prepareForSegue:sender以访问“隐藏”的UIpopoverController,这是由Xcode和Interface builder自动为我们创建的。prepareForSegue:sender方法在切换即将发生时会自动被调用,通过传递给这个方法的参数segue,可以访问切换涉及的源视图控制器和目标视图控制器,当切换为弹出切换时,也可以使用该参数来获取幕后的UIPopoverController实例,例如下面的代码提供了一种可能的解决方法:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.idertifier isEqualToString:@"toEditorPopover"])
{
((UIStoryboardPopoverSegue *)segue).popoverController.delegate=self;
}
}
上述代码中第二行首先检验发生的切换是弹出切换,第三行将segue转换为UIStoryboadSegue子类UIStoryboardPopoverSegue的对象,它用于表是弹出切换,然后便可以通过popoverController获取UIPopoverController实例;并将其delegate属性设置为当前类self。这样当弹出框关闭时会调用ViewController.m中的方法popoverControllerDidDismissPopover,剩下的工作就是实现这个方法。
方法popoverControllerDidDismissPopover可以接受一个参数,通过此参数帮助显示弹出框的UIPopoverController。通过这个对象可以访问属性contentViewController,可以获取弹出框的内容视图控制器,进而通过它来访问我们需要的任何属性。
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
NSString *newEmail;
newEmail = ((EditorViewCOntroller *)popoverController.contentViewController).emailField.text;
self.emailLabel.text = newEmail;
}
相关文章推荐
- IOS开的property要点总结
- 0811 iOS开发完整学习路线
- iOS-KVO究竟怎么用
- 正则表达式在iOS中的运用
- Nagios和cacti
- IOS OC声明变量在@interface括号中与使用@property的区别
- iOS开发系列--视图切换
- IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSet
- IOS RSA 加密方式
- 精通IOS开发第六版学习第五章---旋转和布局
- 【转】IOS性能调优系列:使用Allocation动态分析内存使用情况
- 【转】IOS性能调优系列:使用Instruments动态分析内存泄漏
- 【转】IOS性能调优系列:Analyze静态分析
- ios内存检测工具
- Xcode 6.2 error::can only be used when targeting iOS 4.2 or later错误处理
- iOS 上下有黑边
- ios 类型编码表
- iOS单列设计模式-常用的如下
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- iOS使用NSOperation创建线程