首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在初始入职后过渡到主应用程序流程

如何在初始入职后过渡到主应用程序流程
EN

Stack Overflow用户
提问于 2014-01-06 08:38:20
回答 1查看 727关注 0票数 2

目前,我在storyboard中放置了两个流程:入门/登录流程(当前设置为storyboard设置中的初始视图控制器)和主要应用流程(例如,登录后的核心应用体验)。

从入职到主要应用流程的过渡在UI中成功实现,但我认为我做的方式并不是很正确。我遇到的一个问题是无法将视图状态恢复到主应用程序流。

当从入门流转换到主应用流时,我使用presentViewController转换到新的视图控制器,然后使用removeFromParentViewController从视图层次结构中删除呈现视图控制器的父导航控制器。我在这里的想法是,主应用程序流应该真正拥有自己的视图层次结构,其根应该是新呈现的视图控制器中的第一个视图。

然而,以这种方式做事情会破坏视图恢复代码。我似乎不知何故没能正确地将视图层次结构“重置”为主导航控制器。以前,当我没有从视图层次结构中删除自注册导航控制器时,视图状态恢复是有效的(如下面的代码所示),但现在它不工作了--状态总是恢复到自注册流的开始,主应用程序流控制器永远不会调用- (void)decodeRestorableStateWithCoder:(NSCoder *)coder方法。

下面是来自自注册流控制器的相关代码,它呈现了主应用程序流控制器。

代码语言:javascript
运行
复制
// The presenting view controller from the onboarding flow
@implementation TLOnboardingStep2ViewController
  -(void)presentMainViewController {
      UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

      // The root view controller of the main app flow
      ECSlidingViewController *slidingVC = [board instantiateViewControllerWithIdentifier:@"slidingViewController"];
      [self presentViewController:slidingVC animated:YES completion:^{
          [[UIApplication sharedApplication].delegate window].rootViewController = slidingVC;
          [self.navigationController removeFromParentViewController];
      }];
  }
@end

我在这里做错了什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-01-06 16:05:18

处理这个问题的更好方法似乎是使主应用程序流成为根视图控制器,并在需要时从主视图控制器弹出作为模式视图控制器的登录流。这就是我现在正在做的,它似乎工作得更好了,并且保持了层次结构的整洁。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20941139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档