Storyboard登录屏幕的最佳做法,在注销时处理数据清除
我正在使用Storyboard构建iOS应用程序。根视图控制器是一个标签栏控制器。我正在创建登录/注销过程,它基本上工作正常,但我有一些问题。我需要知道设置这一切的最好方法。
我想完成以下任务:
首次启动应用程序时显示登录屏幕。登录后,转到选项卡栏控制器的第一个选项卡。
任何时候他们在此之后启动应用程序,检查他们是否已登录,并直接跳到根选项卡栏控制器的第一个选项卡。
当他们手动单击注销按钮时,显示登录屏幕,并清除视图控制器中的所有数据。
到目前为止我所做的是将根视图控制器设置为Tab Bar Controller,并为我的Login视图控制器创建了一个自定义segue。在我的Tab Bar Controller类中,我检查它们是否在viewDidAppear
方法内登录,然后执行segue:[self performSegueWithIdentifier:@"pushLogin" sender:self];
我还设置了需要执行注销操作的通知: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];
注销后,我清除Keychain中的凭据,运行[self setSelectedIndex:0]
并执行segue以再次显示登录视图控制器。
这一切都很好,但我想知道:这个逻辑应该在AppDelegate吗?我还有两个问题:
第一次启动应用程序时,Tab Bar Controller会在执行segue之前短暂显示。我已经尝试过移动代码viewWillAppear
但是segue不会那么早。
当他们注销时,所有数据仍然在所有视图控制器中。如果他们登录到新帐户,旧帐户数据仍会显示,直到刷新为止。我需要一种方法在注销时轻松清除它。
我愿意改变它。我已经考虑将登录屏幕设置为根视图控制器,或者在AppDelegate中创建导航控制器来处理所有事情......我只是不确定此时最好的方法是什么。
三国纷争