文档章节

UIPopOverController的使用问题

hejunbinlan
 hejunbinlan
发布于 2015/06/23 20:14
字数 241
阅读 1252
收藏 1

今天不经意间发现了UIPopOverController的使用,使用iphone模拟器会出现Crash

crash的原因如下:

'NSInvalidArgumentException', reason: '-[UIPopoverController initWithContentViewController:] called when not running under UIUserInterfaceIdiomPad.'

 

所以必须使用ipad进行浏览,

所以在代码中使用UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 

 

所以在viewDidLoad的代码如下:

[cpp] view plaincopy

- (void)viewDidLoad  

{  

    [super viewDidLoad];  

    // Do any additional setup after loading the view.  

      

    UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];  

    container.backgroundColor = [UIColor lightGrayColor];  

    [self.view addSubview:container];  

       

    UIButton *tmpButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 100, 50)];  

    tmpButton.backgroundColor = [UIColor brownColor];  

    [tmpButton setTitle:@"点击显示" forState:UIButtonTypeCustom];  

    [tmpButton addTarget:self action:@selector(btnTest:) forControlEvents:UIControlEventTouchUpInside];  

    [self.view addSubview:tmpButton];  

    [tmpButton release];  

      

    popTableView = [[PopTableViewController alloc] init];  

      

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {  

        popOverController = [[UIPopoverController alloc] initWithContentViewController:popTableView];  

        popOverController.delegate = self;  

        popOverController.popoverContentSize = CGSizeMake(100, 300);  

    }  

}  

 

在btnTest方法中实现popOverController显示

 

代码如下:

[cpp] view plaincopy

-(void)btnTest:(UIButton *)sender  

{  

    CGRect presentFromRect = CGRectMake(sender.frame.origin.x, sender.frame.origin.y, sender.frame.size.width, sender.frame.size.height);  

    [popOverController presentPopoverFromRect:presentFromRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];  

}  

 

现在可以使用ipad运行下显示了。在iphone模拟器中不会出现crash,但是不会弹出popOverController,显示不出需要的效果


本文转载自:http://www.software8.co/wzjs/yidongkaifa/1535.html

共有 人打赏支持
hejunbinlan
粉丝 41
博文 593
码字总数 21569
作品 0
浦东
高级程序员
私信 提问
UIPopoverController 使用总结

先看他的继承关系,UIPopoverController是直接继承自NSObject,它和UIViewController没有关系.那它是怎么实现弹出在所有View之上的,我猜测是利用了keywindow,把这个View加在keywindow里面,...

木木情深
2014/02/18
0
0
iOS中UIPopoverController使用详解

iOS中UIPopoverController使用详解 一、引言 UIPopoverController是Pad设备中常用的一种视图控制器,其在UI表现上为在当前视图控制器上面弹出一个子视图控制器,通常用来展示交互列表。示例如...

珲少
2016/07/13
553
0
Popover View in iPhone

在iPhone上也能使用UIPopoverController。这个代码库不但让UIPopoverController的使用变得简单,同时也能在iPhone上使用UIPopoverController。点击任意控件,如按钮、导航条按钮、工具条按钮...

匿名
2012/07/06
3.6K
1
UIPickerView在UIPopoverController中正确显示方法

开发iPad应用程序与iPhone有一点小差别,就是iPad支持弹出框。这个示例展示如何在UIPopoverController上显示一个 UIPickerView,当然你可以显示任何的UIView到UIPopover上面。原理就是构建一个...

鉴客
2012/02/11
1K
0
转屏后UIPopoverController的重定位

UIPopoverController是iPad上特殊的UI控制器,主要用于以非全屏模态的方式显示界面上的临时信息,UIPopoverController类提供了两个方法用于显示: //用于以任意view触发的显示定位情况– pr...

big军
2013/04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

android分辨率,屏幕尺寸,屏幕密度关系

名词定义分辨率分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素...

GoldenVein
17分钟前
1
0
inux驱动的异步通知(kill_fasync,fasync)---- 驱动程序向应用程序发送信号

===========================应用程序========================= #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <poll.h> #include <sign......

天王盖地虎626
18分钟前
1
0
使用android studio时,ADB连接不上手机可能性之一

问题描述:as是通过adb连接手机进行调试了,如果电脑装了鲁大师,360等软件,可能会存在adb被这些软件占用的情况,所以会连接不上手机。这种解决方案有很多,比如通过任务管理器查看是谁占用...

白话
21分钟前
1
0
node实践--node集体管理工具PM2入门指南

来自PM2实用入门指南 简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 下面就对PM2进行入门性的介绍,基本...

spinachgit
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部