为登录屏幕例如模态基于故事板(Example for login screen modally ba

2019-09-01 19:57发布

我学习IOS / Xcode和在一个路障。

我有一个tabbarcontroller +导航为基础的设计。 我需要展示一个登录屏幕,如果用户没有登录。这是基本的层次结构。 登录页面需要的导航栏(我跟着教程放栏上的“开始”按钮。

LoginController: (LTController.h,.m)

Main View:TabBarController>
                   NavigationController>View1>View1a
                   NavigationController>View2

我对模式的看法,代表法等读很多帖子,这里大部分都是代码片段不幸的是有点过了头我的初级水平。

希望得到一个简单的解释如何实现这一目标。 Espacially上的说明文件需求的变化将是巨大的。

谢谢

Answer 1:

下面是场景。 它的那么简单。 我只是希望,这将是有益的。

对于UITableBarController给出一个名字身份故事板ID

然后在您的视图控制器类文件你有身份验证凭据权>? 做一些东西在那边进行身份验证。 然后按照这个代码。 它工作正常

- (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];
        } 


Answer 2:

它看起来像你有了一个良好的开端。 既然你有一个的TabBar设计,你必须做出关于如何呈现登录页面选择时,你会做到这一点。

你必须要么提出其显示使用TabBar之前,或者把逻辑在你的第一个视图控制器启动登录过程。 还有其他的方法为好,但他们变得更加复杂,我想给你基本的选择现在。

这里是笼统的概念,我建议。

一个)的某处创建持久存储变量,以确定是否一个用户登录与否。

b)中增加一个检查此标志在View将加载附加到的TabBar第一视图控制器的方法。

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];
   }

}

一对夫妇更多的点,它看起来像你使用故事板和塞格斯。 在这种情况下,你会做以下几点:

  • 创建一个新的视图控制器为您的登录页
  • 控件拖动从第一视图控制器在你的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

要关闭该模式的看法。 从技术上讲,你应该使用委托回调做到这一点,但如果你试图让事情变得简单,这应该是确定

       [self dismissViewControllerAnimated:YES completion:^{

        }];

所以,你的逻辑是这样的 - 他们没有登录? 是的,然后设置YES地位登录,然后解雇。 如果它们的DOD没有登陆,什么也不做。 他们被卡住了。

最后,如果你需要设置你的登录控制器,你可以使用方法:prepareForSegue ...的SEGUE发生前初始化变量。 你可能已如果你正在做一些教程,了解它。

嗯...希望帮助。 这是一个非常基本的方法。 如果你是工作,你可以继续你去更多的安全和功能添加到它。

好运。



文章来源: Example for login screen modally based on storyboard