獲取工程中window上面的RootViewController keyWindow是,在windows陣列中最近時間呼叫makeKeyAndVisible方法的屬性。
方法一:建議使用
AppDelegate *app =(AppDelegate *) [UIApplication sharedApplication].delegate;
UIViewController *rootViewController1 = appdelegate.window.rootViewController;
複製程式碼
AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
if ([appdelegate.window.rootViewController isKindOfClass:["xxxrootVC" class]] == YES) {
// 這樣更保險
}
複製程式碼
方法二:不建議使用
UIAlertController或UIAlertView或UIActionSheet彈出後,keyWindow就會變成UIAlertControllerShimPresenterWindow這個類
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIViewController *rootViewController2 = window.rootViewController;
複製程式碼
alertView的出現是因為,生成了一個新的window,加在了介面上面。 這個時候獲取到的keyWindow就是UIAlertControllerShimPresenterWindow。