zoukankan      html  css  js  c++  java
  • iOS 5 编程iPad特有的弹出框(Popover)

    目前,弹出框(Popover)是iPad设备特有的功能和特性(iPhone 尚不支持)。用户只需触摸弹出框外面,就可关闭弹出框。

    在storyboard的interface builder中,拖曳编辑按钮(初始视图)到目标视图控制器(也就是弹出框窗口)图标上,在弹出切换类型菜单中,选择popover类型,如下图所示:

    切换(Segue)对应的Attributes Inspector窗口,可检查相关的属性:

    然后根据需要对弹出框的视图大小(Size Inspector窗口)和UI进行必要的编辑设计。

    范例App的相关代码:

    1. 首先初始视图控制器需要实现UIPopoverControllerDelegate协议,因为在用户关闭弹出框时,需要在方法popoverControllerDidDismissPopover 中获取弹出窗口的实例变量或属性值;

    @interface ViewController : UIViewController <UIPopoverControllerDelegate>

    2. prepareForSegue:sender 方法用来设置popoverController.delegate=self,表示由本实现文件来负责熟悉委托方法;

    另外,根据本视图控制器的属性值,初始化弹出框的emailField文本框;

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    UIStoryboardPopoverSegue *popoverSegue;
    popoverSegue=(UIStoryboardPopoverSegue *)segue;

    UIPopoverController *popoverController;
    popoverController=popoverSegue.popoverController;
    popoverController.delegate=self;

    if([segue.identifier isEqualToString:@"showEditor"]){
    EditorViewController *editorVC = segue.destinationViewController;
    editorVC.emailField.text = self.emailLabel.text;
    }
    }

    3. 在本视图控制器的实现文件中,实现popoverControllerDidDismissPopover 方法,负责处理弹出框关闭之后,获取弹出框中emailField 文本框的文本属性;

    - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
    {
    NSString *newEmail = ((EditorViewController *) popoverController.contentViewController).emailField.text;
    self.emailLabel.text = newEmail;
    }

    范例iPad App的运行界面:

    App实现的功能比较简单,实现在弹出框中编辑Email地址,编辑完成之后,点击弹出框外部任意地方,弹出框消失,新的Email地址更新到初始视图中。

  • 相关阅读:
    编程基础——c 选择结构程序设计个人总结实例
    编程基础C——常量,变量,运算符个人总结
    编程基础C——格式化输入函数scanf的应用
    编程基础C——基本数据类型个人总结:
    django-base
    django-mvc
    OSI七层与TCP/IP五层网络架构详解
    tcp/ip三次握手及四次挥手
    网页浏览过程
    http协议
  • 原文地址:https://www.cnblogs.com/tuncaysanli/p/2727828.html
Copyright © 2011-2022 走看看