Ios UIViewImage未在类方法的子视图中加载

Ios UIViewImage未在类方法的子视图中加载,ios,objective-c,class,uiview,global-variables,Ios,Objective C,Class,Uiview,Global Variables,我正在尝试将UIImage视图加载到具有全局类的tabbar应用程序中,第一次加载RootViewController时,图像不会加载图像,但它确实显示了警报。如果单击另一个选项卡项以加载另一个视图并返回到第一个视图,则警报和图像都会正确显示 #import "globalNetworkCheck.h" #import "CheckNetworkAvaliblity.h" #import "ViewController.h" @implementation globalNetworkCh

我正在尝试将UIImage视图加载到具有全局类的tabbar应用程序中,第一次加载RootViewController时,图像不会加载图像,但它确实显示了警报。如果单击另一个选项卡项以加载另一个视图并返回到第一个视图,则警报和图像都会正确显示

#import "globalNetworkCheck.h"

#import "CheckNetworkAvaliblity.h"

#import "ViewController.h"


@implementation globalNetworkCheck



static globalNetworkCheck *getNetworkStatus = nil;

static UIView *viewNetworkError = nil;

+(globalNetworkCheck *)getNetworkStatus
 {
@synchronized(self)
{       if(getNetworkStatus==nil)     {
    // getNetworkStatus= [globalNetworkCheck new];

    if ([CheckNetworkAvaliblity CheckNetwork])
    {
        {
            [(UIView *)viewNetworkError removeFromSuperview];

            viewNetworkError.backgroundColor=[UIColor clearColor];


            viewNetworkError.hidden=YES;


            [viewNetworkError removeFromSuperview];

            [[viewNetworkError subviews]
             makeObjectsPerformSelector:@selector(removeFromSuperview)];


            NSLog(@"Success, Your network is available");
        }
    }
    else
    {

        UIImageView *imgNoConnection = [[UIImageView alloc] initWithFrame:CGRectMake(0, 70, 320 , 449)];


        viewNetworkError = [[UIView alloc]init];

        [imgNoConnection setImage:[UIImage imageNamed:@"Noconnection.png"]];

        viewNetworkError.frame = CGRectMake(0, 0, 320 , 449);

        [viewNetworkError addSubview: imgNoConnection];

        viewNetworkError.hidden = NO;

        [[UIApplication sharedApplication].keyWindow.rootViewController.view addSubview:viewNetworkError];

        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle: @"Connection Failed"
                              message: @"You are not connected to the internet. Please check your network settings and try again."
                              delegate: self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];

        viewNetworkError.hidden = NO;

        NSLog(@"Sorry, Network connection is unavailable");
    }}}

return getNetworkStatus;

}

@end
我正在调用上的类方法

     -(void)viewWillAppear:(BOOL)animated {

    globalNetworkCheck *obj=[globalNetworkCheck getNetworkStatus];
删除此行:

[viewNetworkError addSubview:viewNetworkError];
我很奇怪,你打算如何将
viewNetworkError
添加到
viewNetworkError

编辑

我想你是说

 [self addSubview:viewNetworkError];

您需要在某处添加视图。目前,该类方法在视图层次结构上没有关联。如果您想让它成为这样的类方法,那么您需要将错误视图添加到窗口或根视图控制器视图中

[[UIApplication sharedApplication].keyWindow.rootViewController.view addSubview:viewNetworkError]
[[UIApplication sharedApplication].keyWindow添加子视图:viewNetworkError]

如果不了解完整视图堆栈,就有点难以进一步回答。或者,通过更多的返工,您可以将此责任放在AppDelegate上,而不是像这样的类方法上。创建应用程序代理可以根据需要添加到层次结构的视图,在应用程序代理上创建公共getter以检查当前网络状态等。下面是如何创建HUD类型视图的示例:

一旦我这样做了,图像就不会像它需要的那样出现。我现在要让图像出现,它只会自动消失。有什么建议吗?有什么不屑一顾的?警报视图?在这两种情况下你都有NSLog,这些会开火吗?我移动了[警报显示];到方法的底部。它不再关闭自己,只是在加载图像时不会将图像加载到第一个RootViewController上,但它确实显示了警报。但是,如果单击另一个选项卡项并返回,则警报和图像都会正确显示。我已经编辑了上面的代码,向你展示了我所拥有的。如果不看到整个应用程序,很难说如何进一步提供帮助。听起来视图控制器堆栈中的某些东西很时髦。您可以尝试将右键添加到窗口(我将调整我的答案)