zoukankan      html  css  js  c++  java
  • AJ学IOS 之ipad开发Popover的基本使用

    AJ分享,必须精品

    一:效果图

    这里写图片描述

    二:注意

    对于方法[UIPopoverController dealloc] reached while popover is still visible.
    当popover还在显示的时候,它就挂了
    不允许popover还在显示的时候挂掉
    popover必须在消失的时候挂掉

    三:核心代码

    - (IBAction)popMenu:(id)item {
        // 0.内容
        MenuViewController *menu = [[MenuViewController alloc] init];
    
        // 1.创建一个UIPopover
        UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:[[UINavigationController alloc] initWithRootViewController:menu]];
    
        // 2.设置尺寸
    //    popover.popoverContentSize = CGSizeMake(320, 44 * 5);
    
        // 3.从哪里显示出来 --> 指向item
        [popover presentPopoverFromBarButtonItem:item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    
        self.popover = popover;
    }

    四:全部代码展示

    ViewController

    #import "ViewController.h"
    #import "MenuViewController.h"
    
    @interface ViewController ()
    - (IBAction)popMenu:(id)item;
    @property (nonatomic, strong) UIPopoverController *popover;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
    }
    
    // -[UIPopoverController dealloc] reached while popover is still visible.
    // 当popover还在显示的时候,它就挂了
    // 不允许popover还在显示的时候挂掉
    // popover必须在消失的时候挂掉
    
    /**
     *  弹出Popover菜单
     */
    - (IBAction)popMenu:(id)item {
        // 0.内容
        MenuViewController *menu = [[MenuViewController alloc] init];
    
        // 1.创建一个UIPopover
        UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:[[UINavigationController alloc] initWithRootViewController:menu]];
    
        // 2.设置尺寸
    //    popover.popoverContentSize = CGSizeMake(320, 44 * 5);
    
        // 3.从哪里显示出来 --> 指向item
        [popover presentPopoverFromBarButtonItem:item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    
        self.popover = popover;
    }
    @end
    
    #import "MenuViewController.h"
    
    @interface MenuViewController ()
    @property (nonatomic, strong) NSArray *titles;
    @end
    
    @implementation MenuViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.titles = @[@"设置", @"清除缓存", @"退出", @"基本信息"];
        self.title = @"菜单";
        self.view.backgroundColor = [UIColor blueColor];
    
        CGFloat w = 320;
        CGFloat h = self.titles.count * 44;
        self.preferredContentSize = CGSizeMake(w, h);
    //    self.contentSizeForViewInPopover = CGSizeMake(w, h);
    }
    
    #pragma mark - Table view data source
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return self.titles.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *ID = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
        }
    
        cell.textLabel.text = self.titles[indexPath.row];
    
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UIViewController *vc = [[UIViewController alloc] init];
        vc.view.backgroundColor = [UIColor redColor];
        [self.navigationController pushViewController:vc animated:YES];
    }
    
    @end
    
  • 相关阅读:
    递归程序设计方法
    深入理解 Entity Framework
    面向对象设计的七大原则分析与实践
    JavaScript内置对象与原型继承
    设计模式之创建型(1)-简单工厂
    设计模式之创建型(2)-工厂方法模式
    设计模式之创建型(3)-抽象工厂模式
    设计模式之创建型(4)-建造者模式(Builder)
    设计模式之创建型(5)-单例模式(Singleton)
    设计模式之创建型(6)-原型模式(Prototype)
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990278.html
Copyright © 2011-2022 走看看