2013-12-23 77 views
0

我加載一個視圖,它從webservices獲取數據。因此,根據來自服務器的響應代碼,如果響應代碼爲400,則顯示當前視圖或重定向到另一個視圖(ErrorView)。但是,我沒有被重定向到ErrorView並在控制檯中查找消息"Attempt to present <ErrorView: 0xe332f30> on ViewController while a presentation is in progress!"viewdidLoad/viewDidAppear問題

Google搜索後我發現放置vieDidLoad代碼viewDidAppear 將整個代碼後,將其重定向到錯誤觀點和作品correctly.But在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

該觀點認爲,狀態欄?當前視圖或ErrorView? –

+0

CurentView認爲它 – Honey

+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) 
    } 
} 
+0

我試過你的code.But導航欄出現在ios7.ios7狀態欄(20px)問題的狀態欄上。 – Honey