首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两种不同流的故事板

两种不同流的故事板
EN

Stack Overflow用户
提问于 2014-01-10 16:21:00
回答 1查看 427关注 0票数 3

我的应用程序要求用户在第一次使用它时注册。注册流程有三个屏幕,用户需要完成。

当用户完成注册流程后,他将进入应用程序的主用户界面。

用故事板处理流程变化的最佳方法是什么?

我的最佳猜测是使用两个故事板,一个主故事板和一个注册故事板,然后在运行时,检查是否需要注册流程并加载注册故事板,否则加载主故事板。

这是处理两个流的最好或最常见的方法吗?如果是的话,在注册流完成后如何切换到主故事板?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 16:39:32

你可以把所有的东西都放在一个故事板里,它会很好的工作。您可以选择在应用程序启动期间要实例化哪个视图控制器。

首先,您需要转到目标的设置,并从上面写着“主界面”的地方移除情节提要。然后,您将希望在应用程序委托中的application:didFinishLaunchingWithOptions:方法中有如下代码:

代码语言:javascript
运行
复制
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

UIViewController *viewController = nil;

BOOL needsSignUp = //Your check for whether you need to sign in or not here

if (needsSignUp) {
    viewController = [storyboard instantiateViewControllerWithIdentifier:@"SignUpScreen"];
}
else {
    viewController = [storyboard instantiateViewControllerWithIdentifier:@"MainAppScreen"];
}

self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];

这只是在手动实例化故事板之后,决定要从情节提要中手动实例化哪个视图控制器。您需要用故事板中视图控制器的实际标识符替换@"SignUpScreen"@"MainAppScreen"

确保您遵循第一步,从目标中的“主界面”中移除情节提要,因为这使得它自动实例化您的故事板并自动选择初始视图控制器,这是您不再希望它做的。

编辑:

每个视图控制器都有对它实例化的故事板的引用,所以当您完成注册并希望显示您的主应用程序屏幕时,只需调用以下一行即可得到它:

代码语言:javascript
运行
复制
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"MainAppScreen"];

如果使用UINavigationController显示注册屏幕,则可以通过以下操作替换视图控制器堆栈:

代码语言:javascript
运行
复制
[self.navigationController setViewControllers:@[viewController] animated:YES];

如果希望将主屏幕视图控制器设置为根视图控制器,或者将任何其他视图设置为根视图控制器,则可以这样做:

代码语言:javascript
运行
复制
self.view.window.rootViewController = viewController;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21049286

复制
相关文章

相似问题

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