0

登录我的应用程序后,我试图在 IOS 中显示一个新视图。如果用户已经登录此应用程序,我还想在启动应用程序时显示此视图。

现在,如果我在第一次有登录视图时启动应用程序,我可以写下我的用户名和密码。当我按下发送按钮(登录)时,下一个控制器启动。当我从 Web 服务下载信息时,我想将一个视图设置为 2 或 3 秒。我不在乎信息是否比两秒钟快,因为我想等待这一次。我将用户信息保存在NSUserdefaults.

下次我启动应用程序时,我已经有了信息,我直接进入下一个视图控制器,没有看到任何登录视图。所以我想看加载视图。

我使用 AFNetworking 来使用我的网络服务。

4

3 回答 3

0

这是一个想法,使用 GCD:

  1. 将登录信息存储到钥匙串中(NSUserDefaults对于密码来说简直是不安全的!)并在保存后立即关闭登录窗口。
  2. 当显示加载视图时,创建一个调度组并在那里提交您的登录和下载逻辑。(com.example.login线程)
  3. 使用 NSTimer(或任何适当的逻辑)等待 3 秒,然后在 GCD(com.example.login-wait线程)中生成另一个线程,调用 dispatch_group_wait 以阻塞该线程,直到com.example.login线程完成,然后将块提交回主队列以切换视图。

我在多个应用程序中使用了这个登录,它看起来很棒。

于 2013-06-05T20:45:50.617 回答
0

您有两个选项,显示 2 秒似乎有点随意,但您可以先显示视图,然后:

[myView performSelector:@selector(setHidden:) withObject:[NSNumber numberWithBool:YES] afterDelay:3.0];

或者您可能应该做的是在 AFNetworking 调用的完成块中隐藏视图或将其设置为 nil,这样如果调用时间超过 2-3 秒,视图就不会消失

于 2013-05-29T18:18:52.370 回答
0

您可以使用以下方法调用延迟后隐藏视图的方法:

[self performSelector:@selector(hideView) withObject:nil afterDelay:3.0];
于 2013-05-29T18:19:54.787 回答