2016-08-05 115 views
0

我正在嘗試在成功登錄時顯示菜單頁的簡單登錄應用程序。在菜單頁面的操作頁面上,我們可以選擇查看登錄該手機的所有用戶並單擊任何用戶,它應該執行一些登錄處理並再次直接進入菜單頁面。這就是工作流程應該如何進行的。控制器之間的導航 - 黑屏

下面是解釋它的圖像。

enter image description here

所有控制器連接到除了賬戶控制器和中間控制器塞格斯。這兩者之間的導航使用pushViewController完成,因爲我必須將帳戶控制器(表視圖控制器和所有用戶列表)的某些信息傳遞給中間控制器。

MiddleController *maController = [[MiddleController alloc] init]; 
     if (maController.view) { 
      maController.ma_userId = mo_userId; // Set the exposed property 
      maController.ma_password = mo_password; 
     [self.navigationController pushViewController:maController animated:YES]; 

中控器在獲取詳細信息後完成所有過程。但是直接進入菜單控制器就是我面臨的問題。如果我在中間控制器和菜單控制器之間使用segue,則會拋出錯誤no identifier with the name segueName found。但如果我使用pushViewController那麼它顯示一個空白的黑色屏幕。有些人可以幫我解決這個問題。

這是我如何推動它:

MenuTableViewController *mapMenuTableviewController = [[MenuTableViewController alloc]init]; 
     [self.navigationController pushViewController:mapMenuTableviewController animated:NO]; 

我已經試過了張貼在前面做題的所有方式,但沒有任何幫助。

在此先感謝

+0

方式[self.navigationController popViewControllerAnimated:YES]; –

+0

@balkaransingh如果我使用與您的代碼相同的代碼,它只顯示與帳戶控制器相同的屏幕。 – ASN

+0

好@ASN你想要按Menu鍵後去MenuTableViewController嗎? –

回答

1

儘量不要的Alloc-init,但是其實例化FOM故事板是這樣的(你應該增加它的故事板ID)

YourViewControllerClass *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"]; 

,然後按它。

+0

@IIYA:你能解釋一下你應該爲它添加一個故事板ID嗎? – ASN

+0

請看看這個問題:http://stackoverflow.com/q/13867565/6562596 –

+0

在我的情況下,我應該定義菜單控制器的storyboardID吧? – ASN

0

將storyboard Id添加到接口構建器「SendSMSViewController」的yput並調用以下代碼。

let SendSmsVC = self.storyboard?.instantiateViewControllerWithIdentifier("SendSMSViewController") as! SendSMSViewController 

    self.navigationController?.pushViewController(SendSmsVC, animated: true) 
1

您需要添加故事板ID這樣

enter image description here

而且使用像

UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerID"]; 
+0

在我的情況下,我應該爲菜單控制器定義storyboardID吧? – ASN

0

PLZ使用此代碼,你會去MenuTableViewController。

for (UIViewController *controller in self.navigationController.viewControllers) 
        { 
         if ([controller isKindOfClass:[MenuTableViewController class]]) 
         { 
          [self.navigationController popToViewController:controller animated:YES]; 

          break; 
         } 
        } 
1

轉到您的故事板,並設置這樣的標識:

enter image description here

現在,在您的視圖控制器,這樣做:

YourViewController *viewController = [[UIStoryboard storyboardWithName:@"<your storyboard name>" bundle:nil] instantiateViewControllerWithIdentifier:@"myViewControllerID"]; 
[self.navigationController pushViewController:viewController animated:NO]; 

更新 -

推動你的賬戶視圖控制器和中間視圖控制器的方式我之前告訴過。

然後,當你處理中間控制器完成,只是這樣做:你期運用

[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:NO completion:nil]; 
+0

在我的情況下,我應該爲菜單控制器定義storyboardID吧? – ASN

+0

是的,將它用於視圖控制器,您不使用segues進行展示。 (在這裏,你的帳戶和中間控制器) –

+0

是的..它的工作..謝謝你的答案。但是因爲它必須通過中間控制器,所以它應該顯示一個黑色的屏幕,然後顯示菜單控制器。 – ASN