dismiss ios pop效果_iOS实现pop效果(模态一个气泡出来)

前面写过一篇关于UIPopoverPresentationController简单实用的文章,在使用中可能会碰到一个问题,就是点击pop出来的界面之外的地方pop出的界面才会消失,这就导致如果我在pop出的界面上放置了button 或者 放了tableView的时候,触发点击事件了,而pop出的界面还存在,很影响用户体验,基于这点我也是问了些前辈,发现都不知道怎么手动关闭这个pop出的界面,所以我把头文件翻遍了都没找到相应的方法,最终没办法,我一个个属性和方法试出来的. 先看下我实现的效果:

屏幕快照 2016-03-02 下午8.16.40.png

打开UIPopoverPresentationController的头文件你会发现这样一些方法

屏幕快照 2016-03-02 下午8.24.17.png

你可以看到带dismiss的方法,但是这并不是我们需要的,这两个方法是在pop出的界面消失或者即将消失的时候才调用的,而我们需要的屈确实类似于dismissViewControllerAnimated: completion: 的方法,如果你按照普通的方法来打的话会出现这两种方法

屏幕快照 2016-03-02 下午8.29.01.png

然而这两种方法并没有什么用,通过名字你也能看出来这并不是我们想要的,但是dismissal并没有其他代码提示了.机智的我突然想到是不是可以调用一下他的父视图做dismiss,但是事与愿违,self.categoryPopover.superclass值点出了父类,这怎么dismiss,不卖关子了,直接展示怎么解决的.

屏幕快照 2016-03-02 下午8.34.50.png

如图所示,我想按得是pop但是没想到按完p的时候我无意中看到了ViewController,顿时知道该怎么做了

屏幕快照 2016-03-02 下午8.36.39.png

此段代码触发的时候,pop出的控制器就会销毁,我写这篇博客的目的不是单纯的介绍解决办法,而是想告诉到家解决办法的途径,当遇到问题的时候我第一个想法是自己找头文件解决,找不到了想到的是百度,然而百度很多帖子都是抄袭别人的,自己被没有实际操作,甚至有些问题没有答案,这个时候就要靠自己了,有很多问题是想通的,想让控制器消失,那肯定要拿到这个控制器,所以我第一次想到的是父类,通过代码打印可以看到self.categoryPopover的父类就是ViewController,但是你想拿到他怎么办,通过KVO可以拿到,但很麻烦,这个时候你可以试试点语法,本次的问题就完美解决了.

iOS是不断跟新的,很多老的方法不断被弃用,已知抱着老的方法不断的去用,报黄也不去理会,当有一天真的被弃用的时候你会发现,你本来有时间去学习新的替换方法的,却因为工程催的紧而没有办法去学习了,所以只能百度别人的方法,照本宣科之后出一顿莫名其妙的错误,引以为戒吧.

文/Ashoka_APP(简书作者)

原文链接:http://www.jianshu.com/p/d739baa62a11

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值