Uiviewcontroller * FINDBESTVC (Uiviewcontroller *VC) {if(vc.presentedviewcontroller) {returnFINDBESTVC (Vc.presentedviewcontroller); } Else if([VC Iskindofclass:[uisplitviewcontrollerclass]]) {Uisplitviewcontroller*SP = (Uisplitviewcontroller *) VC; returnSp.viewControllers.count >0?FINDBESTVC (Sp.viewControllers.lastObject): VC; } Else if([VC Iskindofclass:[uinavigationcontrollerclass]]) {Uinavigationcontroller*na = (Uinavigationcontroller *) VC; returnNa.viewControllers.count >0?FINDBESTVC (Na.topviewcontroller): VC; } Else if([VC Iskindofclass:[uitabbarcontrollerclass]]) {Uitabbarcontroller*ta = (Uitabbarcontroller *) VC; returnTa.viewControllers.count >0?FINDBESTVC (Ta.selectedviewcontroller): VC; } returnVC;} Uiviewcontroller*CURRENTVC () {Uiviewcontroller*ROOTVC =[UIApplication Sharedapplication].keywindow.rootviewcontroller; returnFINDBESTVC (ROOTVC);}
You only need to call
Uiviewcontroller *VC = CURRENTVC ();
Gets the currently displayed Uiviewcontroller