2016-08-05 140 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