UIPopOverController的使用问题

今天不经意间发现了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,显示不出需要的效果

时间: 2024-08-17 09:49:58

UIPopOverController的使用问题的相关文章

iOS开发中UIPopoverController的使用详解

这篇文章主要介绍了iOS开发中UIPopoverController的使用,代码基于传统的Objective-C,需要的朋友可以参考下 一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面 2.使用步骤 要想显示一个UIPopoverController,需要经过下列步骤

QQ空间客户端(1)-UIPopoverController基本使用

UIPopoverController 是iPad的专属API ViewController.m #import "ViewController.h" #import "DJMenuViewController.h" @interface ViewController () - (IBAction)leftItemDidClick:(id)sender; @end @implementation ViewController - (void)viewDidLoad

iOS-UIPopoverController(ipad)

UIPopoverController只能在ipad设备上面使用:作用是用于显示临时内容,特点是总是显示在当前视图最前端,有一个箭头可以指示从哪一个button弹出来的,当单击界面的其他地方时自动消失. (1)创建两个UIViewController类(ListViewController和oneViewController) ListViewController作为一个弹出的控制器视图显示 (2)建好弹出视图显示些什么,就是弹出一个表. [objc] #import <UIKit/UIKit.

UIPopoverController 的使用

#import "ViewController.h" #import "RYColorSelectController.h" #import "RYMenuViewController.h" #import "RYTitleViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad

iPad 控件UIPopoverController使用

UIPopoverController 是iPad特有控件,(iOS7-9),在iOS9之后别废弃 使用步骤 设置内容控制器 UIPopoverController直接继承NSObject,不具备可视化能力.所以一定要指定一个继承自UIViewController的"内容控制器"来提供内容 设置内容的尺寸 在屏幕上显示的大小 从那个地方显示出来 code 新建一个VC类 MenuViewController 作为 UIPopoverController 的内容控制器, 在HomeVC增

UIPopoverController

围绕着某一块特定区域显示(箭头指定那块特定区域) - (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated; rect :指定箭头所指区域的矩形框范围(位置和尺寸) view :rect参数是以view的左上角为坐标原点(0,0) arrowDi

分享功能使用的UIPopoverController在iOS9 过期,替换为popoverPresentationController

记录一下 以备以后用到的时候拿出来看看.以前使用的: 1 if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Phone) { 2 presentViewController(vc, animated: true, completion: nil) 3 } else if (popover == nil || !popover!.popoverVisible) { 4 popover = UIPopove

iOS UIPopoverController的使用

1. 什么是UIPopoverController? 是iPad开发中常见的一种控制器(在iphone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面 2.怎么使用UIPopoverController? 2.1 使用的思路(初步) 1>创建一个UIPopover 2>确定内容 3>设置尺寸 4>从哪里显示出来 2.2 示例代码一 // 创建一个UIPopover

UIPopoverController具体解释

今天一位童鞋问我个问题.大意是popoverController不会显示.经过我寻找问题发现以下这种方法不好掌控. 为什么说他不好掌控那.我这个给大家带来一个列子.通过这个列子来介绍PopoverController的具体使用方法,以及这种方法的2中传參技巧. - (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arr