как я могу получить текущее активное представление (основной вид, просматриваемый пользователем) из делегата приложения для ссылок?
Как получить активный вид в приложении iOS из делегата приложения?
Ответ 1
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *topView = window.rootViewController.view;
Ответ 2
Все верхние ответы не работают с модальными представленными видами! Вместо этого используйте этот код:
UIView * topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
Ответ 3
Это зависит от того, как настроено ваше приложение.
Как правило, у вашего делегата приложения будет свойство main view controller, которое позволит вам добраться до него.
Чтобы получить делегат вашего приложения
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
UIView *topView = appDelegate.viewController.view;
Если ваше приложение имеет свойство контроллера навигации в делегате приложения, вы можете сделать что-то вроде этого.
UIView *topView = appDelegate.navigationController.topViewController.view;
Ответ 4
Я нашел это, и он отлично работает для меня для всех типов segues и контроллеров представлений.
+ (UIViewController *) getTopController { UIViewController * topViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topViewController.presentedViewController) {
topViewController = topViewController.presentedViewController;
}
return topViewController;
}
Ответ 5
вы можете использовать [appDelegate.navigationController.topViewController class]
для регистрации класса контроллера или получения свойства title, чтобы узнать, какой он есть.
Ответ 6
Надеюсь, это поможет вам
UINavigationController *navCnt = (UINavigationController *)self.window.rootViewController;
if([navCnt.topViewController isMemberOfClass:[WebViewController class]])
{
return UIInterfaceOrientationMaskAll;
}
else
return UIInterfaceOrientationMaskPortrait;
Ответ 7
В любом месте приложения вы также можете получить представление rootViewController:
id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];
UIView *rootView = appDelegate.window.rootViewController.view;
Ответ 8
Попробуйте Эрик ответить:
+ (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}