从第三层导航控制器返回到原始根视图控制器
Go back to original Root View Controller from a third tier Navigation Controller
我有一些故事板设置如下:
故事板 A
--> Root Navigation Controller --> Container View Controller --> View Controller --> Home View Controller --> Storyboard B Reference
故事板 B
--> 容器视图控制器 --> 导航控制器 --> 视图控制器 --> Storyboard C 参考
故事板 C
--> 导航控制器--> 视图控制器
要点是,我加载应用程序并设置 rootViewController
。然后我浏览应用程序并最终进入 Storyboard B
,其中包含一个将我带到 Storyboard C
的按钮。在 Storyboard C
中的 View Controller
上有一个按钮,我想用它返回应用程序的开始。
如何从 Storyboard C
中的 View Controller
回到 Storyboard A
中的 Home View Controller
?
我试过的东西:
[self.navigationController.navigationController popViewControllerAnimated:animated];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[self presentViewController:viewController animated:animated completion:nil];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[UIApplication sharedApplication].keyWindow.rootViewController = viewController;
以上 3 个都返回到正确的位置,但随后应用程序崩溃 EXC_I386_GPFLT
。
我还尝试了其他一些无效的方法。我知道这可能是一件非常简单的事情,我今天过得很糟糕。现在非常感谢任何建议。
我好像在主线程执行popViewControllerAnimated:
方法解决了:
[self.navigationController.navigationController performSelectorOnMainThread:@selector(popViewControllerAnimated:) withObject:nil waitUntilDone:nil];
我有一些故事板设置如下:
故事板 A
--> Root Navigation Controller --> Container View Controller --> View Controller --> Home View Controller --> Storyboard B Reference
故事板 B
--> 容器视图控制器 --> 导航控制器 --> 视图控制器 --> Storyboard C 参考
故事板 C
--> 导航控制器--> 视图控制器
要点是,我加载应用程序并设置 rootViewController
。然后我浏览应用程序并最终进入 Storyboard B
,其中包含一个将我带到 Storyboard C
的按钮。在 Storyboard C
中的 View Controller
上有一个按钮,我想用它返回应用程序的开始。
如何从 Storyboard C
中的 View Controller
回到 Storyboard A
中的 Home View Controller
?
我试过的东西:
[self.navigationController.navigationController popViewControllerAnimated:animated];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[self presentViewController:viewController animated:animated completion:nil];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[UIApplication sharedApplication].keyWindow.rootViewController = viewController;
以上 3 个都返回到正确的位置,但随后应用程序崩溃 EXC_I386_GPFLT
。
我还尝试了其他一些无效的方法。我知道这可能是一件非常简单的事情,我今天过得很糟糕。现在非常感谢任何建议。
我好像在主线程执行popViewControllerAnimated:
方法解决了:
[self.navigationController.navigationController performSelectorOnMainThread:@selector(popViewControllerAnimated:) withObject:nil waitUntilDone:nil];