控制器之间的导航 - 黑屏
Navigation between Controllers - Black Screens
我正在尝试开发一个简单的登录应用程序,该应用程序在成功登录后会显示一个菜单页面。在菜单页面的操作 sheet 上,我们有一个选项可以查看所有登录该 phone 的用户并单击任何用户,它应该进行一些登录处理并再次定向到菜单页面。这就是工作流程应该继续进行的方式。
下面是解释它的图片。
除帐户控制器和中间控制器外,所有控制器都连接到 segues。这两者之间的导航是使用 pushViewController
完成的,因为我必须将一些信息从帐户控制器(table 带有所有用户列表的视图控制器)传递到中间控制器。
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 问题中发布的所有方法,但没有任何帮助。
提前致谢
尽量不要分配初始化,而是像这样从故事板实例化它(你应该给它添加一个故事板 ID)
YourViewControllerClass *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];
然后推送。
将情节提要 ID 添加到您的界面构建器 "SendSMSViewController" 并调用以下代码。
let SendSmsVC = self.storyboard?.instantiateViewControllerWithIdentifier("SendSMSViewController") as! SendSMSViewController
self.navigationController?.pushViewController(SendSmsVC, animated: true)
您需要像这样添加故事板 ID
并使用喜欢
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerID"];
请使用此代码,您将转到 MenuTableViewController。
for (UIViewController *controller in self.navigationController.viewControllers)
{
if ([controller isKindOfClass:[MenuTableViewController class]])
{
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
转到您的情节提要,然后像这样设置标识符:
现在,在您的视图控制器中,执行此操作:
YourViewController *viewController = [[UIStoryboard storyboardWithName:@"<your storyboard name>" bundle:nil] instantiateViewControllerWithIdentifier:@"myViewControllerID"];
[self.navigationController pushViewController:viewController animated:NO];
更新 -
按照我之前告诉你的方式推送你的帐户视图控制器和中间视图控制器。
然后,当您的处理在中间控制器中完成时,只需执行以下操作:
[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:NO completion:nil];
我正在尝试开发一个简单的登录应用程序,该应用程序在成功登录后会显示一个菜单页面。在菜单页面的操作 sheet 上,我们有一个选项可以查看所有登录该 phone 的用户并单击任何用户,它应该进行一些登录处理并再次定向到菜单页面。这就是工作流程应该继续进行的方式。
下面是解释它的图片。
除帐户控制器和中间控制器外,所有控制器都连接到 segues。这两者之间的导航是使用 pushViewController
完成的,因为我必须将一些信息从帐户控制器(table 带有所有用户列表的视图控制器)传递到中间控制器。
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 问题中发布的所有方法,但没有任何帮助。
提前致谢
尽量不要分配初始化,而是像这样从故事板实例化它(你应该给它添加一个故事板 ID)
YourViewControllerClass *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];
然后推送。
将情节提要 ID 添加到您的界面构建器 "SendSMSViewController" 并调用以下代码。
let SendSmsVC = self.storyboard?.instantiateViewControllerWithIdentifier("SendSMSViewController") as! SendSMSViewController
self.navigationController?.pushViewController(SendSmsVC, animated: true)
您需要像这样添加故事板 ID
并使用喜欢
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerID"];
请使用此代码,您将转到 MenuTableViewController。
for (UIViewController *controller in self.navigationController.viewControllers)
{
if ([controller isKindOfClass:[MenuTableViewController class]])
{
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
转到您的情节提要,然后像这样设置标识符:
现在,在您的视图控制器中,执行此操作:
YourViewController *viewController = [[UIStoryboard storyboardWithName:@"<your storyboard name>" bundle:nil] instantiateViewControllerWithIdentifier:@"myViewControllerID"];
[self.navigationController pushViewController:viewController animated:NO];
更新 -
按照我之前告诉你的方式推送你的帐户视图控制器和中间视图控制器。
然后,当您的处理在中间控制器中完成时,只需执行以下操作:
[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:NO completion:nil];