控制器之间的导航 - 黑屏

时间:2016-08-05 06:54:50

标签: ios objective-c uiviewcontroller viewcontroller

我正在尝试使用一个简单的登录应用程序,该应用程序在成功登录时会显示一个菜单页面。在菜单页面的操作页面上,我们可以选择查看登录该手机的所有用户并点击任何用户,它应该进行一些登录处理并再次指向菜单页面。这就是工作流程的方式。

以下是解释它的图片。

enter image description here

除帐户控制器和中间控制器外,所有控制器都连接到segues。这两者之间的导航是使用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];

我已经尝试了之前SO问题中发布的所有方法,但没有任何帮助。

提前致谢

5 个答案:

答案 0 :(得分:1)

尽量不要使用alloc-init,而是像这样实例化故事板(你应该添加一个故事板id)

volatile

然后推它。

答案 1 :(得分:1)

您需要添加这样的故事板ID

enter image description here

并使用

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

答案 2 :(得分: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];

答案 3 :(得分:0)

将故事板ID添加到yput界面构建器&#34; SendSMSViewController&#34;并拨打以下代码。

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

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

答案 4 :(得分:0)

使用此代码,您将转到MenuTableViewController。

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

                            break;
                        }
                    }