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控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
随机推荐
- Android蓝牙UUID简要
UUID是"Universally Unique Identifier"的简称,通用唯一识别码的意思.对于蓝牙设备,每个服务都有通用.独立.唯一的UUID与之对应.也就是说,在同一 ...
- Chrome 的审查元素功能有哪些奇技淫巧
学习地址: https://www.zhihu.com/question/34682699
- JMeter接口学习笔记2017
协议学习地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 本篇学习笔记来自于慕课网上学习JMeter的学习笔记 学习 ...
- 执行 rails server 报错 Could not find a JavaScript runtime
修改第15行 # gem 'therubyracer', platforms: :ruby 去掉注释 执行 bundle install
- Verilog中的UDP
概述 Verilog HDL语言提供了一种扩展基元的方法,允许用户自己定义元件(User Defined Primitives,UDP).通过UDP,可以把一块组合逻辑电路或者时序逻辑电路封装在一个U ...
- UnQLite简介
UnQLite是,由Symisc Systems公司出品的一个嵌入式C语言软件库,它实现了一个自包含.无服务器.零配置.事务化的NoSQL数据库引擎.UnQLite是一个文档存储数据库,类似于Mong ...
- Web验证码图片的生成-基于Java的实现
验证码图片是由程序动态产生的,每次访问的内容都是随机的.那么如何采用程序动态产生图片,并能够显示在客户端页面中呢?原理很简单,对于java而言,我们首先开发一个Servlet,这个Servlet的任务 ...
- 双杀 0day 漏洞(CVE-2018-8174)复现
漏洞描述: CVE-2018-8174 是 Windows VBScript Engine 代码执行漏洞. 微软在4月20日早上确认此漏洞,并于5月8号发布了官方安全补丁,对该 0day 漏洞进行了修 ...
- 第十二章 Java内存模型与线程(待续)
············
- Axure RP的基础使用
Axure RP是一个专业的快速原型设计工具. 在上面可以直接设计软件的原型而且不涉及代码,例如设计软件的流程和界面之类的.简单的说,就是可以在上面编写界面,让人看起来像一个完整的软件一样. 设置完成 ...