iOS實現pop效果(模態一個氣泡出來)

前面寫過一篇關於UIPopoverPresentationController簡單實用的文章,在使用中可能會碰到一個問題,就是點擊pop出來的界面以外的地方pop出的界面纔會消失,這就致使若是我在pop出的界面上放置了button 或者 放了tableView的時候,觸發點擊事件了,而pop出的界面還存在,很影響用戶體驗,基於這點我也是問了些前輩,發現都不知道怎麼手動關閉這個pop出的界面,因此我把頭文件翻遍了都沒找到相應的方法,最終沒辦法,我一個個屬性和方法試出來的. 先看下我實現的效果:



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

 

打開UIPopoverPresentationController的頭文件你會發現這樣一些方法spa

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


你能夠看到帶dismiss的方法,可是這並非咱們須要的,這兩個方法是在pop出的界面消失或者即將消失的時候才調用的,而咱們須要的屈確實相似於dismissViewControllerAnimated:<#(BOOL)#> completion:<#^(void)completion#> 的方法,若是你按照普通的方法來打的話會出現這兩種方法事件

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


然而這兩種方法並無什麼用,經過名字你也能看出來這並非咱們想要的,可是dismissal並無其餘代碼提示了.機智的我忽然想到是否是能夠調用一下他的父視圖作dismiss,可是事與願違,self.categoryPopover.superclass值點出了父類,這怎麼dismiss,不賣關子了,直接展現怎麼解決的.io

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


如圖所示,我想按得是pop可是沒想到按完p的時候我無心中看到了ViewController,頓時知道該怎麼作了class

屏幕快照 2016-03-02 下午8.36.39.png用戶體驗


此段代碼觸發的時候,pop出的控制器就會銷燬,我寫這篇博客的目的不是單純的介紹解決辦法,而是想告訴到家解決辦法的途徑,當遇到問題的時候我第一個想法是本身找頭文件解決,找不到了想到的是百度,然而百度不少帖子都是抄襲別人的,本身被沒有實際操做,甚至有些問題沒有答案,這個時候就要靠本身了,有不少問題是想通的,想讓控制器消失,那確定要拿到這個控制器,因此我第一次想到的是父類,經過代碼打印能夠看到self.categoryPopover的父類就是ViewController,可是你想拿到他怎麼辦,經過KVO能夠拿到,但很麻煩,這個時候你能夠試試點語法,本次的問題就完美解決了.百度

iOS是不斷跟新的,不少老的方法不斷被棄用,已知抱着老的方法不斷的去用,報黃也不去理會,當有一天真的被棄用的時候你會發現,你原本有時間去學習新的替換方法的,卻由於工程催的緊而沒有辦法去學習了,因此只能百度別人的方法,照本宣科以後出一頓莫名其妙的錯誤,引覺得戒吧.


 

文/Ashoka_APP(簡書做者) 原文連接:http://www.jianshu.com/p/d739baa62a11 著做權歸做者全部,轉載請聯繫做者得到受權,並標註「簡書做者」。

相關文章
相關標籤/搜索