我正在尝试使用一个简单的登录应用程序,该应用程序在成功登录时会显示一个菜单页面。在菜单页面的操作页面上,我们可以选择查看登录该手机的所有用户并点击任何用户,它应该进行一些登录处理并再次指向菜单页面。这就是工作流程的方式。
以下是解释它的图片。
除帐户控制器和中间控制器外,所有控制器都连接到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问题中发布的所有方法,但没有任何帮助。
提前致谢
答案 0 :(得分:1)
尽量不要使用alloc-init,而是像这样实例化故事板(你应该添加一个故事板id)
volatile
然后推它。
答案 1 :(得分:1)
您需要添加这样的故事板ID
并使用
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerID"];
答案 2 :(得分:1)
转到故事板,并设置如下标识符:
现在,在视图控制器中,执行以下操作:
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;
}
}