關於獲取當前viewcontroller的實現 上網查了很多,但是不全。自己整合了一下
思路通過過responder 來一步一步的找到最上層的viewcontroller
uiviewcontroller*result =
nil;
uiwindow
* window = [[ if
(window.windowlevel!= uiwindowlevelnormal) }
}uiview *frontview = [[window subviews] objectatindex:0];
nsarray *array = [window subviews];
//找到最上層的view
id nextresponder = [frontview nextresponder];
if ([nextresponder iskindofclass:[uiviewcontroller
class]])
result = nextresponder;
else
result = window.rootviewcontroller;
return result;
首先進行第一步就死獲取 當前window ,查了一下 keywindow 這個東西 儲存rootviewcontroller的window 預設的模式是normal, 還有二個是alter 和statusbar。
得到window後 就可以 順藤摸瓜了
window是展現檢視的,就要從view找起,通過index為0的uiview向上找,直到「響應鏈」上的乙個viewcontroller。
參考文章:
但是這樣做是有缺陷的
但view controller present的時候 這個方法就 失效了
所以我們需要加上一句
while
(result.presentedviewcontroller)
順藤摸瓜
獲取當前顯示的activity
用activitymanager裡面可以獲取到當前執行的所有任務,所有程序和所有服務,這是任務管理器的核心。仔細看getrunningtasks的文件,裡面說獲取的是系統中 running 的所有task,running 狀態包括已經被系統凍結的task。而且返回的這個列表是按照順序排列的,也就是說...
獲取使用者當前顯示的Activity
在ios裡的介面跳轉是要知道當前頁面是哪個才能正確跳轉,在android開發中有時也可能需要知道使用者當前的activity是哪個。那要怎麼獲取呢?activitymanager am activitymanager getsystemservice activity service compone...
PHP獲取當前月份,多種顯示方法
php獲取當前月份有3種常用的顯示方法 1 date m 顯示的月份為jan,feb格式 2 date m 顯示的格式為01,02,03格式 3 date n 顯示的格式為1,2,3格式 如果需要在前端以select框的形式顯示,可以使用如下 selected selected 其中,使用autoc...