UIPopoverController 简单用法(全代码)
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UINavigationController *nav =[[UINavigationController alloc]initWithRootViewController:[[ViewController alloc]init]]; self.window.rootViewController =nav; [self.window makeKeyAndVisible]; return YES; }
ViewController.m
#import "ViewController.h" #import "View2Controller.h" @interface ViewController ()<UIPopoverControllerDelegate> @property (nonatomic,strong) UIPopoverController *popoverButtonItem; @property (nonatomic,strong) UIPopoverController *popoverButton; @end @implementation ViewController //popoverButtonItem懒加载 -(UIPopoverController *) popoverButtonItem{ if (!_popoverButtonItem) { UINavigationController *nav= [[UINavigationController alloc]initWithRootViewController: [[View2Controller alloc]init]]; _popoverButtonItem= [[UIPopoverController alloc] initWithContentViewController:nav]; _popoverButtonItem.delegate = self; } return _popoverButtonItem; } //popoverButton懒加载 -(UIPopoverController *) popoverButton{ if (!_popoverButton) { _popoverButton= [[UIPopoverController alloc] initWithContentViewController:[[View2Controller alloc]init]]; _popoverButton.delegate = self; } return _popoverButton; } //1. 从BarButtonItem点击弹出 -(void) touchButtonItem:(UIBarButtonItem *)btn { /** * 从BarButtonItem上点击 * @param item:围绕着哪个UIBarButtonItem显示 * @param permittedArrowDirections:箭头指的方向 * @param animated:动画 */ [self.popoverButtonItem presentPopoverFromBarButtonItem:btn permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } //2从界面上的某个按钮或者某片区域弹出popOver,排除navigationBar或者TabBar上的点击 -(void) touchButton:(UIButton *)btn { /** * 从界面上的某个按钮或者某片区域弹出popOver * @param presentPopoverFromRect: 指定箭头所指区域的矩形框范围(位置和尺寸) * @param inView: rect参数是以view的左上角为坐标原点(0,0) * @param permittedArrowDirections:箭头指的方向 * @param animated:动画 */ [self.popoverButton presentPopoverFromRect:btn.bounds inView:btn permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES]; } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor grayColor]; self.navigationItem.title = @"导航栏"; self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc]initWithTitle:@"点我" style:UIBarButtonItemStyleDone target:self action:@selector(touchButtonItem:)]; //******************************************************************************** UIButton *btn =[[UIButton alloc]initWithFrame:CGRectMake(, , , )]; [btn setTitle:@"点我啊" forState:UIControlStateNormal]; [btn setTintColor:[UIColor blueColor]]; [btn setBackgroundColor:[UIColor redColor]]; [btn addTarget:self action:@selector(touchButton:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; } // UIPopoverControllerDelegate --在ARC环境下正确的做法是保持popover的生命周期。让popover是strong类型的成员变量或属性。 当收到UIPopoverController dismiss的消息的时候将popover=nil;这样就可以正常便用了。 - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { self.popoverButton = nil; self.popoverButtonItem = nil; }
View2Controller.m
- (void)viewDidLoad { [super viewDidLoad]; // 设置控制器在popover中显示的尺寸 跟 view 一样 self.preferredContentSize = self.view.frame.size; }
UIPopoverController 简单用法(全代码)的更多相关文章
- angularjs中ng-route和ui-router简单用法的代码比较
1.使用ng-route: app.js中的写法: var app=angular.module('birthdayApp',['ngRoute']); app.config(function($ro ...
- 简单JS全选、反选代码
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org ...
- listActivity和ExpandableListActivity的简单用法
http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...
- JS的简单用法
JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...
- slf4j的简单用法以及与log4j的区别
之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...
- 13.Ext.extend用法以及代码解读
转自:http://www.blogjava.net/dragonshrimp/archive/2008/03/01/183060.html Ext.extend用法以及代码解读 概述 Ext.ext ...
- NSCharacterSet 简单用法
NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...
- [转]Valgrind简单用法
[转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
随机推荐
- ArcGIS_Lisence安装步骤
1.双击lisence.exe文件 2.下一步 3.关闭 4.下一步 5.下一步 6.下一步 7.安装 8.完成 9.OK
- 数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)
主要内容 1.标准输入输出和错误 2.管道命令和 grep, tr,sort, wc, cut,split,tee,sleep 标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0, ...
- Vue.js:计算属性
ylbtech-Vue.js:计算属性 1.返回顶部 1. Vue.js 计算属性 计算属性关键词: computed. 计算属性在处理一些复杂逻辑时是很有用的. 可以看下以下反转字符串的例子: 实例 ...
- json and pickle 序列化和反序列化
类似vmware虚拟机里的虚拟主机挂起操作,把当前内存拷贝成文件保存. 上面的这种操作就叫内存序列化:如下图: 有序列化就有反序列化,要把文件里的东西再恢复成字典:eval把字符串变成字典. 但是上面 ...
- SQL语句替换字段内容例子
SELECT REPLACE(SysFuncID,'7201','7204') , CASE WHEN Flag=1 THEN REPLACE(funcname ...
- Java 对象和实例的区别
本来我以为是一样的,其实是不一样的 参看:http://www.blogjava.net/dreamstone/archive/2011/06/03/101733.html
- Windows + Ubuntu 双系统安装
前言:本篇文章是对之前文章的更新,更新的主内容是把原来用手机拍摄的图片换成了虚拟机的截图,以及对磁盘划分的新的见解和一些使用感受,原本是打算删除之前的那篇Win + Ubuntu双系统的文章的,后来想 ...
- Centos7下快速安装Mongo3.2
Centos7下快速安装Mongo3.2 一般安装Mongo推荐源码安装,有时候为了快部署测试环境,或者仅仅是想装个mongo shell,这时候yum安装是最合适的方式, 下面介绍一下如何在Cent ...
- zabbix监控MySQL部署实战
1.部署zabbix监控. 1.1 建用户组和用户 groupadd zabbix useradd -d /home/zabbix -g zabbix -m zabbix passwd zabbix ...
- (转)CSS布局-负边距-margin
css中的负边距(negative margin)是布局中的一个常用技巧,只要运用得合理常常会有意想不到的效果.很多特殊的css布局方法都依赖于负边距,所以掌握它的用法对于前端的同学来说,那是必须的. ...