【问题标题】:Load view controller without displaying nib加载视图控制器而不显示 nib
【发布时间】:2015-01-01 13:28:54
【问题描述】:

我有一个按钮,它显示了一个包含登录元素的视图控制器,其中包括 Facebook 登录按钮。用户成功登录后,视图控制器将自动关闭,用户返回上一屏幕。

我正在尝试实现一个自动登录功能,缓存的令牌可以自动登录,即用户不必点击显示辅助视图的按钮。目前,检查缓存令牌的逻辑工作正常,一旦我加载视图,它会立即登录并删除视图,而无需我做任何事情。但是我希望能够在不实际显示视图本身的情况下触发它。有没有办法显示视图但不可见?或者这些场景是如何实现的?

目前我有

self.loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
self.loginVC.delegate = self;
self.loginVC.modalTransitionStyle = UIModalPresentationFormSheet;
[self presentViewController:self.loginVC animated:YES completion:^(void){}];

【问题讨论】:

  • 登录发生在哪些方法中?如果这一切都在 viewDidLoad 中完成,那么您可以强制加载视图,但只需访问它 (self.login.view) 来代替 presentViewController

标签: ios objective-c facebook uiviewcontroller facebook-login


【解决方案1】:
  1. 创建一个类LoginAuth,它只执行登录身份验证的网络调用。
  2. 当您希望loginVC 出现时,唤醒笔尖,调用LoginAuth 并在成功验证时执行关闭。
  3. 自动登录,后台通过缓存token直接调用LoginAuth进行认证;如果成功则继续,否则显示LoginVC 以再次登录

【讨论】:

  • 我同意阿米莎的观点。 (已投票。)视图控制器对象用于显示和管理视图。如果它碰巧包含一些其他方法,那没关系,但是创建一个不会显示任何内容的视图控制器是没有意义的。将您的逻辑拆分为 2 个不同的对象,一个身份验证对象和一个登录视图控制器对象,然后将它们一起编写会更有意义。
  • 问题是fb登录是由视图触发的,逻辑都被抽象掉了。我唯一需要指定的是原始 vc 的委托,并且仅在登录后才被调用。
猜你喜欢
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
相关资源
最近更新 更多