繁体   English   中英

如何使用情节提要设置条件初始ViewController

[英]How to set conditional initial viewcontroller with storyboard

我想建立一个身份验证过程,首先将用户定向到登录屏幕,在此用户可以输入其凭据,并且仅在成功通过身份验证后才定向到主页。

基于在线上找到的教程( http://sapandiwakar.in/programatically-set-the-initial-view-controller-using-storyboards/ ),我了解可以使用委托来这样做。 但是我不知道

  • 我的application:didFinishLaunchingWithOptions:在哪里application:didFinishLaunchingWithOptions:方法
  • 如何实例化viewcontroller
  • 将其推送到navigationcontroller

我怎么知道怎么做?

如果我正确理解您的问题。 如果用户未登录,则要将其引导到登录视图。否则,将其引导至主视图。

您可以这样尝试:

  1. 添加一个视图控制器,并将其作为“容器视图控制器”。
  2. 将此“容器视图控制器”设置为初始视图控制器,其中当用户打开应用程序时,它将是入口视图控制器。
  3. 在此视图控制器的viewDidLoad方法下,您必须检查用户是否已登录。
  4. 如果用户未登录,请在容器中加载登录视图,否则加载主视图。

这是一个示例:

在您的ContainerViewController.m中

- (void)viewDidLoad
{
    if(isUserLoggedIn)
    {
        [self loadMainView];  
    }

    else
    {
        [self loadLoginView];
    }
}

- (void)loadMainView
{
    UIViewController mainViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainView"];

    [self addChildViewController:mainViewController];
    [self.view addSubview:mainViewController.view];

    [mainViewController didMoveToParentViewController:self];
    [mainViewController.view setFrame:self.view.bounds];
}

- (void)loadLoginView
{
    UIViewController loginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginView"];

    [self addChildViewController:loginViewController];
    [self.view addSubview:loginViewController.view];

    [loginViewController didMoveToParentViewController:self];
    [loginViewController.view setFrame:self.view.bounds];
}

请注意:您不需要在容器和其他两个视图控制器之间设置segue。

希望这可以帮助。 :)

选择您的情节提要->打开显示属性检查器->在“视图控制器”选项中选择“检查是初始viewController”

在此处输入图片说明

将您的登录屏幕设置为初始视图控制器,然后使用以下代码成功将应用导航到主屏幕,然后执行登录过程,否则留下相应的消息。

// you need to create UIStoryboard object by giving name of your storyboard
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// here you need to create storyboard ID of perticular view where you need to navigate your app 
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"viewContIdentifire"];

// if use presentViewController this will not enables you to go back to previous view
[self presentViewController:vc animated:NO completion:nil];
                    **// OR**
// using pushViewController lets you to go back to the previous view
[self.navigationController pushViewController:vc animated:YES];

希望这可以帮助 ..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM