objective-c - 用户第一次打开应用程序时处理显示登录屏幕的最佳方法是什么?

标签 objective-c ios xcode4.3

我目前正在构建一个 iOS 应用程序,并试图找出呈现必要屏幕的最佳方式。

该应用程序是基于选项卡的应用程序,但选项卡栏及其子项在用户登录后才可见。

目前,当调用 application:didFinishLaunchingWithOptions 时,应用程序委托(delegate)将 tabbarcontroller 设置为 Root View Controller ,然后选项卡栏 Controller 中的第一个 Controller 将在需要时显示登录 View Controller 。

我使用这种方法的问题是选项卡栏中的第一个 View Controller 非常繁忙。它向外部 API 发出一些请求,其中一些请求首先需要有效的 session token 。

除非有人能提出更好的解决方案,否则我想做的是检查 application:didFinishLaunchingWithOptions 是否存在有效的 session ID。如果有,则将tabBarController设置为rootViewController,如果没有,则将登录 Controller 设置为 Root View Controller 。

有人能看出这个想法有什么陷阱吗?

最佳答案

使用 NSUserDefault 来存储 bool 值,该值第一次为 true,登录屏幕将出现,同时将 bool 值设置为 false。所以第二次登录scrren就不会出现

在 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
 } 

关于objective-c - 用户第一次打开应用程序时处理显示登录屏幕的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280999/

相关文章:

ios - 通过 iOS TestFlight 测试时 React Native RCTFatal + 448 崩溃

ios - Xcode 未将代码更改反射(reflect)到模拟器和设备

objective-c - "incomplete universal character name"与 stringWithUTF8String

objective-c - 将 UITouch 存储在 NSArray 中

ios - 如何按用户对 PFObjects 进行分组,然后对它们进行排序?

ios - 不是 rootViewController 的 UISplitViewController

ios - 使用 NSStream 中的套接字同时连接到多个服务器

ios - 如何使用 SwiftUI 使用 @AppStorage 存储 float

ios - 如何在 Xcode 4.3 上查看复制到构建文件夹的资源?

ios - xcodebuild 命令行忽略 GCC_PREPROCESSOR_DEFINITIONS