最近偶遇一個問題奔缠,當(dāng)使用UISearchController來push一個新的界面時滓窍,push成功后搜索框依然存在碍庵,不知道是不是蘋果的一個bug度气,但是可以通過增加一句代碼來解決:
self.definesPresentationContext=YES;
那么這句話什么意思呢?
definesPresentationContext這是一個布爾變量膨报,表示該視圖被覆蓋時磷籍,視圖或者它的子類提供了一個視圖控制器。默認(rèn)為NO现柠,我們在做跳轉(zhuǎn)時院领,需要一個跳轉(zhuǎn)的環(huán)境,如果呈現(xiàn)的視圖控制器不提供的話够吩,需要呈現(xiàn)這個控制器的父視圖控制器比然。此處因?yàn)閁ISearchController為呈現(xiàn)的視圖控制器,它不提供這個跳轉(zhuǎn)的環(huán)境周循,所以需要它的父視圖控制器提供强法,所以設(shè)置父視圖控制器的這個布爾變量為YES。
這里需要注意個問題:
普通的VC在push時雖然這個屬性默認(rèn)為NO湾笛,但是饮怯,是沒有影響的,因?yàn)檫@種情況只發(fā)生在有新的視圖控制器覆蓋了當(dāng)前控制器的情況嚎研。
Determines which parent view controller's view should be presentedoverforpresentationsoftype view controller has this flagset,thenthepresente will betheroot view controller.
翻譯:確定哪一個控制器應(yīng)該被作為UIModalPresentationCurrentContext類型的演示圖像而呈現(xiàn)蓖墅,如
果沒有父視圖控制器設(shè)置了此標(biāo)志,則呈現(xiàn)者將是當(dāng)前控制器的根視圖控
制器。
大意應(yīng)該是论矾,有視圖控制器覆蓋了根視圖控制器教翩,就手動設(shè)置根視圖控制器為呈現(xiàn)的控制器,并作為跳轉(zhuǎn)的環(huán)境贪壳。