Ios UIViewImage未在类方法的子视图中加载
我正在尝试将UIImage视图加载到具有全局类的tabbar应用程序中,第一次加载RootViewController时,图像不会加载图像,但它确实显示了警报。如果单击另一个选项卡项以加载另一个视图并返回到第一个视图,则警报和图像都会正确显示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
#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上,但它确实显示了警报。但是,如果单击另一个选项卡项并返回,则警报和图像都会正确显示。我已经编辑了上面的代码,向你展示了我所拥有的。如果不看到整个应用程序,很难说如何进一步提供帮助。听起来视图控制器堆栈中的某些东西很时髦。您可以尝试将右键添加到窗口(我将调整我的答案)