【iOS开发-106】UIPopoverController,[UIPopoverController dealloc] reached while popover is still visible

(1)UIPopoverController是iPad特有的弹框类似的类,它没有视图,因为直接继承自NSObject,所以在初始化的时候需要设置内容控制器。如下:

-(UIPopoverController *)titlePop{
    if (_titlePop==nil) {
        UITableViewController *tableVc=[[UITableViewController alloc]init];
        _titlePop=[[UIPopoverController alloc]initWithContentViewController:tableVc];
    }
    return _titlePop;
}

(2)UIPopoverController有2种使用方法,一种是围绕BarButtonItem的,一种是围绕Rect的,当然Rect的范围很广。如下:

-(void)menuClick:(UIBarButtonItem *)sender{
    //直接围绕BarButtonItem的
    [self.menuPop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

-(void)titleClick:(UIButton *)btn{
    //注意rect和inView的关系
    [self.titlePop presentPopoverFromRect:btn.frame inView:btn.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    //[self.titlePop presentPopoverFromRect:btn.bounds inView:btn permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

(3)UIPopoverController还有一些其他属性,比如是否可见等。

//还有以下方法。设置内容视图控制器
//[self.menuPop setContentViewController:nav animated:YES];

//设置popover大小
//[self.menuPop setPopoverContentSize:CGSizeMake(100, 100)];
//self.menuPop.popoverContentSize=CGSizeMake(100, 100);

//设置点击时,popover不消失(默认是点击popover外的任何地方就消失)
//[self.menuPop setPassthroughViews:@[self.btn]];
//[email protected][self.btn];

当然,最实用的就是上面的那个设置大小的属性,但是如果设置大小需要在内容视图控制器中设置呢?就不能实用setPopoverContentSize,需要用到如下的属性:

self.preferredContentSize=CGSizeMake(100, 100);

(4)解决方案:-[UIPopoverController dealloc] reached while popover is still visible.

原因:创建的popover控制器是局部变量,一个花括号执行完毕{}就销毁了,所以会出现问题。

解决办法:把局部变量变成全局变量即可。定义如下,然后使用的时候用self.helloPop即可:

@interface ViewController ()
@property(nonatomic,strong) UIPopoverController *helloPop;
@end

注意:在iOS8中已经不会出现这个错误,即只是在花括号中定义的局部变量,但是不会报错。这个错误一般是在iOS7及以下系统。

时间: 2024-10-13 11:48:00

【iOS开发-106】UIPopoverController,[UIPopoverController dealloc] reached while popover is still visible的相关文章

[UIPopoverController dealloc] reached while popover is still visible

popover 可见的时候,不可以销毁对象, 此时应采取的措施是,定义一个strong属性,来引用这个popover 版权声明:本文为博主原创文章,未经博主允许不得转载.

iOS开发中UIPopoverController的使用详解

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

iOS开发UI篇—popoverController简单介绍

iOS开发UI篇—popoverController简单介绍 一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面 2.使用步骤 要想显示一个UIPopoverController,需要经过下列步骤 (1)设置内容控制器 由于UIPopoverController直接继承

iOS开发系列--通知与消息机制--转

来自:http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

iOS开发项目篇—28自定义UITextView

iOS开发项目篇—28自定义UITextView 一.简单说明 1.要实现的效果 2.分析 (1)UITextField 1.最多只能输入一行文字 2.能设置提醒文字(placehoder) 3.不具备滚动功能 (2)UITextView 1.能输入N行文字(N>0) 2.不能设置提醒文字(没有placehoder属性) 3.具备滚动功能 需求:技能输入多行文字,又具备文字提醒功能. 这里选择自定义一个类,让其继承自UITextView类,为其添加一个设置文字提醒的功能. 二.实现 自定义UI控

iOS开发UI篇—实现一个私人通讯录小应用(二)

iOS开发UI篇—实现一个私人通讯录小应用(二) 一.实现功能说明 (1)点击注销按钮,弹出一个对话框,点击确定后移除当前栈顶的控制器,返回开始界面,点击取消,不做任何操作. 注意:注销按钮的单击事件已经进行了连线.实现-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex需要遵守UIActionSheetDelegate协议. 1 //注销按钮 2 - (IBActi

iOS开发UI篇—实现一个私人通讯录小应用(一)

iOS开发UI篇—实现一个私人通讯录小应用(一) 一.该部分主要完成内容 1.界面搭建                        2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2).当取消勾选记住密码后,自动登录按钮也随之取消:当勾选了自动登录按钮时,记住密码按钮也一同勾选. (3).点击登陆后,弹出蒙版,界面不可交互,程序能够简单判断账号和密码是否正确,如果不正确则给出相应的提示,如果正确则跳转到联系人列表界面. 二.实现过程和代码 项目文件结构图和界面搭建

iOS开发-- Notification 通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本文包括下面内容