zoukankan      html  css  js  c++  java
  • 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;
    
    }
    View Code

    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(100, 100, 100, 50)];
    
        [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;
    
    }
    View Code

    View2Controller.m

    - (void)viewDidLoad
    
    {
    
        [super viewDidLoad];
    
        // 设置控制器在popover中显示的尺寸 跟 view 一样
    
        self.preferredContentSize = self.view.frame.size;
    
    }
    View Code
    成功的秘诀在于你肯不肯
  • 相关阅读:
    啊,好久没更新了,今天分享一个小工具,两个方法,转换字节数组成十六进制字符串
    Oracle的关于建表,约束,查询等的练习
    Oracle的完整练习,纯手工打字,可能有一两点错误。。。
    Oracle的用户管理,授权及备份
    Oracle视图,序列及同义词、集合操作
    Oracle的总体回顾
    Oracle表管理
    Oracle基本代码学习
    网上B2C书城,1.0javaWEB版!!好几天没更新了,都忙着做那个网站了~
    Daily Scrum 12.23
  • 原文地址:https://www.cnblogs.com/zakers/p/4741979.html
Copyright © 2011-2022 走看看