[英]What's the best way to handle showing a sign in screen the first time a user opens an app?
目前,我正在构建一个iOS应用,并尝试找出呈现必要屏幕的最佳方法。
该应用程序是基于标签的应用程序,但在用户登录后,该标签栏及其子级才应该可见。
当前,在调用application:didFinishLaunchingWithOptions
时, application:didFinishLaunchingWithOptions
程序委托将tabbarcontroller设置为根视图控制器,然后,如果需要,选项卡栏控制器中的第一个控制器将显示登录视图控制器。
这种方法的问题在于选项卡栏中的第一个视图控制器非常忙。 它向外部API发出一些请求,其中一些请求首先需要有效的会话令牌。
除非有人可以提出更好的解决方案,否则我想做的是检查application:didFinishLaunchingWithOptions
是否存在有效的会话ID。 如果存在,则将tabBarController设置为rootViewController;如果没有,则将登录控制器设置为根视图控制器。
有人能看到这个想法有什么陷阱吗?
使用NSUserDefault来存储布尔值,这将是第一次,登录屏幕将与make bool value一起显示为false。 因此不会出现第二个登录屏幕
将此添加到application:didFinishLaunchingWithOptions方法中:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTime"];
[[NSUserDefaults standardUserDefaults] synchronize];
现在
if([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstTime"] == YES)
{
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FirstTime"];
[[NSUserDefaults standardUserDefaults] synchronize];
//login screen
}
我已经在我的应用程序中使用了这两种方法,而您所描述的第一种方法是最好的方法,因为您无需弄乱更改视图控制器层次结构。 您确实应该在NSUserDefaults中存储一个布尔值,并在第一个视图控制器中存储另一个布尔值。 检查选项卡的第一个视图控制器的viewDidLoad方法中的userDefault bool值,以查看用户是否已通过身份验证;如果未通过身份验证,则将第一个视图控制器的bool值设置为适当的值,并且不执行您需要通过第三方API执行的操作,进行身份验证,将布尔值设置为适当的值,然后返回第三方API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.