基于故事板的模式登录屏幕示例

aVC*_*aVC 12 modal-dialog storyboard ios

我正在学习ios/xcode和路障.

我有一个tabbarcontroller +导航设计.如果用户没有登录,我需要提供登录屏幕.这是基本的层次结构.登录页面需要一个navigationBar(我按照的教程在栏上放了一个"Go"按钮.

LoginController: (LTController.h,.m)

Main View:TabBarController>
                   NavigationController>View1>View1a
                   NavigationController>View2
Run Code Online (Sandbox Code Playgroud)

故事板布局

我在这里阅读了很多关于模态视图,委托方法等的帖子.其中大部分是代码片段,遗憾的是我的初学者水平有点过头了.

将不胜感激如何实现这一点的简单解释.特别是关于哪些文件需要更改的说明会很棒.

谢谢

Kum*_* KL 12

这是场景.它如此简单.我希望它会有用.

在此输入图像描述

对于UITableBarController,为storyboard id提供身份名称在此输入图像描述

然后在您的ViewController类文件中您具有正确的身份验证凭据>.?在那边做一些事情进行身份验证.然后按照此代码.它工作正常

- (IBAction)Login:(id)sender {

    if(authenticated)  // authenticated---> BOOL Value assign True only if Login Success
        {
            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
            UITabBarController *obj=[storyboard instantiateViewControllerWithIdentifier:@"tab"];
            self.navigationController.navigationBarHidden=YES;
            [self.navigationController pushViewController:obj animated:YES];
        } 
Run Code Online (Sandbox Code Playgroud)


Coc*_*aEv 10

看起来你有一个良好的开端.由于您有标签栏设计,因此您必须选择如何显示登录页面以及何时执行此操作.

您必须在显示标签栏之前显示它,或者在第一个视图控制器中放置逻辑以启动登录过程.还有其他方法,但它们变得更复杂,我想立即给你基本的选择.

这是我推荐的一般概念.

a)在某处创建一个持久存储变量,以确定用户是否登录.

b)在附加到tabbar的第一个视图控制器的View will load方法中添加对此标志的检查.

c)直接从视图控制器提供模态登录页面.如果他们登录,很好地解雇它,如果没有,他们就会被困在模态页面上.

所以,基本上这是怎么做的:

为了解释,我将打电话给你的第一个视图控制器 - 你的tabbar控制器上的第一个标签 - fviewController - 好吗?

在fviewController.m中

-(void)viewDidLoad {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if ([[defaults objectForKey:@"loggedIn"]boolValue]) {
       NSLog(@"user is logged in - do nothing");
    }
   else {

       NSLog(@"User is not logged in");
       [self  performSegueWithIdentifier:@"LoginPage" sender:self];
   }

}
Run Code Online (Sandbox Code Playgroud)

看起来你正在使用故事板和segues.在这种情况下,您将执行以下操作:

  • 为您的登录页面创建一个新的视图控制器
  • 控制从tabbar中的第一个视图控制器拖动segue连接
  • 将segue识别为"模态"
  • 为登录视图控制器创建一个新的视图控制器类
  • 显示您的视图并管理您的身份验证
  • 如果用户已登录,则需要将其存储回NSUserDefaults注意:如果您有多个用户或其他方案,则可能需要修改我在当前用户的示例跟踪状态中显示的单个值.另外:如果您有注销码,则需要正确设置标志.另外:如果用户要经常登录和注销,则会出现使用视图而不是视图加载.

翻转状态:

   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [defaults setValue:[NSNumber numberWithBool:YES] forKey:@"loggedIn"]; //in
   [defaults setValue:[NSNumber numberWithBool:NO] forKey:@"loggedIn"]; //out

   do this in your login controller
Run Code Online (Sandbox Code Playgroud)

解雇模态视图.从技术上讲,您应该使用委托回调来执行此操作,但如果您尝试保持简单,那么这应该没问题

       [self dismissViewControllerAnimated:YES completion:^{

        }];
Run Code Online (Sandbox Code Playgroud)

所以你的逻辑就像这样 - 他们登录了吗?是,然后为登录设置YES状态,然后关闭.如果他们不登录,什么也不做.他们被困住了.

最后,如果您需要设置登录控制器,您将使用方法:prepareForSegue ...在segue发生之前初始化变量.如果你正在做一些教程,你可能已经阅读过它.

嗯......希望有所帮助.这是一种非常基本的方法.如果能够正常工作,您可以继续为其添加更多安全性和功能.

祝你好运.