首页 > 解决方案 > UIAlertviewcontroller 如何始终在当前视图控制器上方显示它,如 uialertview

问题描述

使用 UIalertview 我们可以显示来自任何类的警报,它总是显示在当前视图控制器上方

我正在使用下面的代码片段来找出当前的视图控制器并在上面显示 alertviewcontroller。

   UITabBarController* tabBarController = (UITabBarController*) [[[AppDelegate sharedInstance]window] rootViewController];

    id obj= [[[AppDelegate sharedInstance]window]rootViewController];

    if([obj isMemberOfClass:[UITabBarController class]]){
        UINavigationController *navController = [tabBarController selectedViewController];
        UIViewController *vuContollerObj =  [navController topViewController];
        dispatch_async(dispatch_get_main_queue(), ^ {
            [vuContollerObj presentViewController:alert animated:YES completion:nil];
        });
    }
    else if([obj isMemberOfClass:[CommonNavigationController class]] || [obj isMemberOfClass:[UINavigationController class]]){
        UINavigationController *navObj= obj;
        UIViewController *vuContollerObj =  [navObj topViewController];
        dispatch_async(dispatch_get_main_queue(), ^ {
            [vuContollerObj presentViewController:alert animated:YES completion:nil];
        });
    }
    else{
        dispatch_async(dispatch_get_main_queue(), ^ {
            [obj presentViewController:alert animated:YES completion:nil];
        });
    }

问题一:

应用委托

当我尝试显示警报消息时,由于即将到来的视图控制器,它会被隐藏,并且会出现很短的时间。

问题2:

从现有的视图控制器推送新的视图控制器

当我尝试在视图中显示消息时确实加载了新的视图控制器......我的方法将旧的视图控制器检测为当前的视图控制器。

任何解决此问题的帮助将不胜感激。

标签: iosuinavigationcontrolleruialertviewappdelegateuialertviewcontroller

解决方案


推荐阅读