博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
popoverController简单介绍
阅读量:7133 次
发布时间:2019-06-28

本文共 2746 字,大约阅读时间需要 9 分钟。

popoverController简单介绍

一、简单介绍

1.什么是UIPopoverController

是iPad开发中常见的一种控制器(在iPhone上不允许使用)

跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController

它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面

2.使用步骤

要想显示一个UIPopoverController,需要经过下列步骤

(1)设置内容控制器

  由于UIPopoverController直接继承自NSObject,不具备可视化的能力。因此UIPopoverController上面的内容必须由另外一个继承自UIViewController的控制器来提供,这个控制器称为“内容控制器”

 (2)设置内容的尺寸

  显示出来占据多少屏幕空间

(3)显示,即从哪个地方冒出来

 

二、具体的步骤

代码示例:

新建一个ipad项目,编写如下代码: 

新建一个继承自UITableView的控制器,让其作为popoverController的内容控制器。

YYMenuViewController.m文件

8  9 #import "YYMenuViewController.h"10 11 @interface YYMenuViewController ()12 @property(nonatomic,strong)NSArray *menus;13 @end14 15 @implementation YYMenuViewController16 17 -(NSArray *)menus18 {19     if (_menus==nil) {20         _menus=@[@"列表1",@"列表2",@"列表3",@"列表4"];21     }22  return _menus;23 }24 - (void)viewDidLoad25 {26     [super viewDidLoad];27 }28 29 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView30 {31     return 1;32 }33 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section34 {35     return self.menus.count;36 }37 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath38 {39     static NSString *ID=@"ID";40     UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];41     if (cell==nil) {42         cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];43     }44     45     cell.textLabel.text=self.menus[indexPath.row];46     return cell;47 }48 49 @end

YYViewController.m文件

1 8  9 #import "YYViewController.h"10 #import "YYMenuViewController.h"11 12 @interface YYViewController ()13 @property(nonatomic,strong)UIPopoverController *popover;14 @end15 16 @implementation YYViewController17 18 - (void)viewDidLoad19 {20     [super viewDidLoad];21 }22 23 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event24 {25     //1.新建一个内容控制器26     YYMenuViewController *menuVc=[[YYMenuViewController alloc]init];27     28     //2.新建一个popoverController,并设置其内容控制器29     self.popover=[[UIPopoverController alloc]initWithContentViewController:menuVc];30     31     //3.设置尺寸32     self.popover.popoverContentSize=CGSizeMake(300, 200);33     34     //4.显示35     [self.popover presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];36 }37 @end

实现效果如下图:

  

说明:在storyboard中添加了导航控制器,并添加了两个按钮。

  

 

三、常见报错

在popover的使用过程中,经常会遇到这个错误

  -[UIPopoverController dealloc] reached while popover is still visible.

错误的大体意思是:popover在仍旧可见的时候被销毁了(调用了dealloc)

从错误可以得出的结论

  当popover仍旧可见的时候,不准销毁popover对象

  在销毁popover对象之前,一定先让popover消失(不可见)  

如:在上述代码中,如果不适用全局变量popover,那么将会出现上面的错误。

 

 
 

转载于:https://www.cnblogs.com/crash-wu/p/4797374.html

你可能感兴趣的文章
mongo学习记录
查看>>
node.js搭建本地服务器的代码分享
查看>>
Flask + mod_wsgi + Apache on Windows 部署成功
查看>>
python&mnist笔记
查看>>
redis学习(二)
查看>>
java运算符 与(&)、非(~)、或(|)、异或(^)
查看>>
jdbc的小warning
查看>>
ReactOS:基于Windows的开源操作系统
查看>>
在 Linux 中调试 C 程序的福音——gdb
查看>>
这些年一起学过的Linux
查看>>
Linux环境PHP7.0安装
查看>>
浏览器缓存机制
查看>>
Date、System、Calendar获取当前时间毫秒
查看>>
JS中的类型检测总结
查看>>
vue小demo0
查看>>
QQ邮箱无法收到系统邮件的问题处理
查看>>
iPhone X 网页导航概念
查看>>
python脚本监控程序问题&解决
查看>>
C++ 入门教程(开发文档)
查看>>
UCloud可支撑单可用区320,000服务器的数据中心网络系统设计
查看>>