Подтвердить что ты не робот

Как получить активный вид в приложении iOS из делегата приложения?

как я могу получить текущее активное представление (основной вид, просматриваемый пользователем) из делегата приложения для ссылок?

4b9b3361

Ответ 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;
}