2015-08-19 82 views
1

我正在構建一個應用程序,其中的主要內容是導航控制器。但是,第一次加載應用程序時,我正在將另一個視圖控制器放在該控制器之上(用戶必須註冊等)。這必須與導航控制器分開,以便用戶不能只是回溯。目前,通過我的導航控制器進行導航僅適用於未加載其他視圖控制器的時間。(UINavigationController)PushViewController在PresentViewController後失敗

代碼如果需要的話加載 '註冊' VC:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
if ([prefs objectForKey:@"id"]) { 

} 
else { 
    RegisterViewController * rvc = [storyboard instantiateViewControllerWithIdentifier:@"registerVC"]; 
    [self.navigationController presentViewController:rvc animated:NO completion:^(void){}]; 
} 

在註冊完成:

[viewCtrl dismissViewControllerAnimated:NO completion:^(void){ 
       NSLog(@"VIEW DISMISSED PROPERLY"); 
      }]; 

注:viewCtrl是的viewController被推上。此外,在導航控制器停止工作的時候,「視圖被正確解除」被調用。所以我知道這個觀點正在被駁回。

最後,代碼正常推另一頁上的導航控制器:

ContactViewController * cvc = [self.view.storyboard instantiateViewControllerWithIdentifier:@"contactVC"]; 
[self.view.navigationController pushViewController:cvc animated:NO]; 

只是重申,ContactViewController只加載如果沒有加載註冊頁面。

在此先感謝。

回答

0

你應該推後解僱完成其他的ViewController:

[viewCtrl dismissViewControllerAnimated:NO completion:^(void){ 
        NSLog(@"VIEW DISMISSED PROPERLY"); 
        ContactViewController * cvc = [self.view.storyboard instantiateViewControllerWithIdentifier:@"contactVC"]; 
        [self.view.navigationController pushViewController:cvc animated:NO] 
       }]; 
相關問題