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 简单用法(全代码)的更多相关文章

  1. angularjs中ng-route和ui-router简单用法的代码比较

    1.使用ng-route: app.js中的写法: var app=angular.module('birthdayApp',['ngRoute']); app.config(function($ro ...

  2. 简单JS全选、反选代码

    1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org ...

  3. listActivity和ExpandableListActivity的简单用法

    http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...

  4. JS的简单用法

    JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...

  5. slf4j的简单用法以及与log4j的区别

    之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...

  6. 13.Ext.extend用法以及代码解读

    转自:http://www.blogjava.net/dragonshrimp/archive/2008/03/01/183060.html Ext.extend用法以及代码解读 概述 Ext.ext ...

  7. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  8. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  9. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

随机推荐

  1. springboot mybatisPlus配置

    1.pom依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  2. MATLAB 02

    对一组数据作线性回归,并绘图 clear all; % 输入数据x和y x = [ ]'; y = [11 13 14 15 16 18 20 21 22 25 26 28 29 31]'; x = ...

  3. SpringMVC解决跨域问题及CROS

    CORS 首先因为最近在做一个前后端分离的项目,分开就意味着可能不在一个域中,所以不可避免的遇到CORS的问题.试过几个方法: Spring MVC 4.2.5以后新增的支持跨域的注解@CrossOr ...

  4. 字节序(byte order)和位序(bit order)

    字节序(byte order)和位序(bit order)  在网络编程中经常会提到网络字节序和主机序,也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序.  以前我也基本只了 ...

  5. java里的switch循环--你妹考试落榜了

    总结:switch循环,不用break.那么程序每一个case都会运行到,直到遇到break停止 package com.aa; //格子区域 //3行3列的格子 public class Bu { ...

  6. Unity3D 4.3在Windows下打包iOS资源

    想当年,想弄iOS的版本必须弄台mac机器,虽然一开始要弄iOS的时候觉得在mac上开发感觉挺高富帅的,但是做多了之后就觉得在mac上开发各种不方便.现在好了,Unity3D 4.3开始支持在Wind ...

  7. CentOS yum 安装RabbitMQ

    最近在做机器学习的任务系统,任务模块使用了消息对联,比较快速的搭建方法: 1.安装erlang 下载rpm仓库:wget http://packages.erlang-solutions.com/er ...

  8. Android 4 学习(10):Adapters简介

    参考<Professional Android 4 Development> Adapters简介 Adapter用于将数据和实现AdapterView接口的ViewGroup绑定在一起. ...

  9. Java微信公众平台开发(二)--微信服务器post消息体的接收

    转自: http://www.cuiyongzhi.com/post/39.html 在上一篇的文章中我们详细讲述了如何将我们的应用服务器和微信腾讯服务器之间的对接操作,最后接入成功,不知道你有没有发 ...

  10. bash&nbsp;shell笔记1&nbsp;脚本基础知识

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...