我正在加载一个从webservices获取数据的视图。因此,根据服务器的响应代码,如果响应代码为400,我会显示当前视图或重定向到另一个视图(ErrorView)。但是我没有被重定向到ErrorView并在控制台中找到一条消息"Attempt to present <ErrorView: 0xe332f30> on ViewController while a presentation is in progress!"
在谷歌搜索后,我发现将vieDidLoad代码放到viewDidAppear 放置完整个代码后,它会重定向到错误视图并正常工作。但在状态栏问题的ios7中,我使用了代码
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if(responsecode==200)
{
//load current view
}
else
{
//Load anotherview(ErrorView)
}
float systemVersion=[[[UIDevice currentDevice] systemVersion] floatValue];
if(systemVersion>=7.0f)
{
CGRect tempRect;
for(UIView *sub in [[self view] subviews])
{
tempRect = [sub frame];
tempRect.origin.y += 20.0f;
[sub setFrame:tempRect];
}
}
}
首先,状态栏显示在顶部,然后在加载整个viewdata之后,视图会被调整,status bar dropsdown by 20px
看起来很奇怪。我可以在视图加载之前自动调整它吗?
任何想法/建议都会很明显。
答案 0 :(得分:1)
我认为,您应该将此代码分开
-(void)viewDidLoad
{
float systemVersion=[[[UIDevice currentDevice] systemVersion] floatValue];
if(systemVersion>=7.0f)
{
CGRect tempRect;
for(UIView *sub in [[self view] subviews])
{
tempRect = [sub frame];
tempRect.origin.y += 20.0f;
[sub setFrame:tempRect];
}
}
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if(responsecode==200)
{
//load current view
}
else
{
//Load anotherview(ErrorView)
}
}