popoverController简单介绍
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 @end 14 15 @implementation YYMenuViewController 16 17 -(NSArray *)menus 18 { 19 if (_menus==nil) { 20 _menus=@[@"列表1",@"列表2",@"列表3",@"列表4"]; 21 } 22 return _menus; 23 } 24 - (void)viewDidLoad 25 { 26 [super viewDidLoad]; 27 } 28 29 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 30 { 31 return 1; 32 } 33 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 34 { 35 return self.menus.count; 36 } 37 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 38 { 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文件
18 9 #import "YYViewController.h" 10 #import "YYMenuViewController.h" 11 12 @interface YYViewController () 13 @property(nonatomic,strong)UIPopoverController *popover; 14 @end 15 16 @implementation YYViewController 17 18 - (void)viewDidLoad 19 { 20 [super viewDidLoad]; 21 } 22 23 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 24 { 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
popoverController简单介绍相关推荐
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...
- 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...
- 2021年大数据ELK(二):Elasticsearch简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- 简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...
- LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...
- dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
最新文章
- 安装MYSQL最低的RAM_安装MySQL后,需要调整的10个性能配置项
- BUUCTF-misc另外一个世界 8个二进制数为一组转ASC码
- python红色的颜色表达式_50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)...
- 用SAP WebIDE将CRUD Master-Detail应用打包成Hybrid App
- UI5 xml view里control id的生成逻辑
- 暴走大侠显示进入服务器失败,暴走大侠:常见问题详解,再遇见这样的问题也不再迷糊...
- mysql中profile的使用
- TypeScript和vuejs 搭建webpack,初次体验
- 用shell写的ftp工具
- c语言网吧添加卡,c语言网吧计费系统源代码.docx
- HTTP服务器项目详解
- 74系列芯片功能说明
- 人脸检测高级:疲劳检测
- ubuntu如何安装本地deb文件
- android PIN码解锁流程
- cyclic behavior during switching
- RTL8367SC单芯片做千兆2光5电
- MFRC53101TOFE小知识
- 大数据时代,为什么很多JAVA程序员会转型做JAVA大数据
- Salesforce市值3000亿美元,中国CRM企业能复制成功吗?