iOS獲取當(dāng)前屏幕控制器的方法

1.當(dāng)這個(gè)控制器是navigation控制器的子控制器時(shí),從navigation的棧中找出你要的控制器.

//獲取navigationController棧內(nèi)的Viewcontroller
- (UIViewController *)getViewControlName:(NSString *)vcName
{ 
    for (id obj in self.navigationController.viewControllers)
    { 
        if ([obj isKindOfClass:NSClassFromString(vcName)]) return obj;
    } 
     return nil;
}

2.當(dāng)控制器不是navigation的子控制器時(shí).獲取當(dāng)前屏幕控制器的方法:
PS:獲取到的是最頂層的控制器...

#pragma mark - 獲取當(dāng)前屏幕控制器
- (UIViewController *)getCurrentScreenViewController
{
    UIViewController *result = nil;
    UIWindow * window = [[UIApplication sharedApplication] keyWindow];
    //app默認(rèn)windowLevel是UIWindowLevelNormal源譬,如果不是炕矮,找到UIWindowLevelNormal的
    if (window.windowLevel != UIWindowLevelNormal)
    {
        NSArray *windows = [[UIApplication sharedApplication] windows];
        for(UIWindow * tmpWin in windows)
        {
            if (tmpWin.windowLevel == UIWindowLevelNormal)
            {
                window = tmpWin;
                break;
            }
        }
    }
    id  nextResponder = nil;
    UIViewController *appRootVC=window.rootViewController;
    //    如果是present上來的appRootVC.presentedViewController 不為nil
    if (appRootVC.presentedViewController) {
        nextResponder = appRootVC.presentedViewController;
    }else{
        UIView *frontView = [[window subviews] objectAtIndex:0];
        nextResponder = [frontView nextResponder]; 
    }
    
    if ([nextResponder isKindOfClass:[UITabBarController class]]){
        UITabBarController * tabbar = (UITabBarController *)nextResponder;
        UINavigationController * nav = (UINavigationController *)tabbar.viewControllers[tabbar.selectedIndex];
        //        UINavigationController * nav = tabbar.selectedViewController ; 上下兩種寫法都行
        result=nav.childViewControllers.lastObject;
        
    }else if ([nextResponder isKindOfClass:[UINavigationController class]]){
        UIViewController * nav = (UIViewController *)nextResponder;
        result = nav.childViewControllers.lastObject;
    }else{
        
        result = nextResponder;
    }
    
    return result;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鹅巍,一起剝皮案震驚了整個(gè)濱河市幕屹,隨后出現(xiàn)的幾起案子辕狰,更是在濱河造成了極大的恐慌绢慢,老刑警劉巖值朋,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腻贰,死亡現(xiàn)場(chǎng)離奇詭異吁恍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門冀瓦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伴奥,“玉大人,你說我怎么就攤上這事翼闽∈搬悖” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵感局,是天一觀的道長(zhǎng)尼啡。 經(jīng)常有香客問我,道長(zhǎng)询微,這世上最難降的妖魔是什么崖瞭? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮拓提,結(jié)果婚禮上读恃,老公的妹妹穿的比我還像新娘。我一直安慰自己代态,他們只是感情好寺惫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹦疑,像睡著了一般西雀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歉摧,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天艇肴,我揣著相機(jī)與錄音,去河邊找鬼叁温。 笑死再悼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膝但。 我是一名探鬼主播冲九,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼跟束!你這毒婦竟也來了莺奸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冀宴,失蹤者是張志新(化名)和其女友劉穎灭贷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體略贮,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甚疟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年仗岖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片古拴。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箩帚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黄痪,到底是詐尸還是另有隱情紧帕,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布桅打,位于F島的核電站是嗜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挺尾。R本人自食惡果不足惜鹅搪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遭铺。 院中可真熱鬧丽柿,春花似錦、人聲如沸魂挂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涂召。三九已至坠非,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間果正,已是汗流浹背炎码。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秋泳,地道東北人潦闲。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迫皱,于是被迫代替她去往敵國(guó)和親矫钓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容