nev*_*asy 5 storyboard uinavigationcontroller ios
在我们的故事板中,我们有多个UINavigationController
堆栈.例如,LoginViewController
堆栈与堆栈完全分离SWRevealViewController
.
切换它们的最佳做法是什么?当我按下注销按钮(注销按钮在SWRevealController
堆栈上)然后尝试呈现LoginViewController堆栈时,我收到如下错误:
Warning: Attempt to present LoginViewController on SWRevealViewController whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)
即使我专门设置self.window.rootViewController
为UINavigationController
App Delegate中的Login View Controller ,如下所示:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Spitfire" bundle:nil];
UINavigationController *nav = [storyboard instantiateViewControllerWithIdentifier:@"LoginNavigationController"];
LoginViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
self.window.rootViewController = nav;
[nav presentViewController:loginVC animated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)
有没有办法可以"解雇"当前的UINavigationController
堆栈并使用新堆栈?或者也许我不应该在我的应用代理中调用此代码?
我没有SWRevealViewController
在你的问题之前玩过,所以我之前的反应更为通用.我在这里创建了一个示例应用程序,尽可能多地使用尽可能多的导航堆栈; 我确定我已经覆盖了你的用例.
我会引起你注意的一些事情:
我之前回答的"主要流程"正好在故事板的中间; 这应该有助于你的方向.
SWRevealViewController.m
可以与Storyboards一起使用,并且有一个非常聪明的黑客方法,但它的文档隐藏在实现中.我花了一段时间来弄清楚到底发生了什么,但我的示例应用程序说明了用法(两个segues,一个用于"front",另一个用于"back",可能有三个用于"right").
应用程序的主流程完全换掉备用流程.这是设计的SWRevealViewController
.您实际上是切换到一个全新的应用程序.
以模态方式呈现的所有子流都会破坏流程.
作者SWRevealViewController
没有提供UIStoryboardSegue
用于替换前视图,后视图和右视图控制器的子类.这实现起来很简单,但我选择在实现中手动进行交换FHKSettingsViewController
.
我重复了代码并制作了一些极简的课程,以确保我所做的事情是显而易见的.
归档时间: |
|
查看次数: |
3694 次 |
最近记录: |