首先我只是盯着iOS,所以这可能是一些虚拟问题,但我无法弄明白。我使用delegate
进行侧边栏菜单,并使用FrontViewPosition
检测self.revealViewController().delegate = self
并在viewDidLoad
中使用viewDidAppear
这段代码出现问题(如果我把这一行放在FirebaseAuth
中)同样的事情。我使用LoginViewController
并拥有self.revealViewController().delegate = self
所以当我第一次登录时会抛出异常
线程1:致命错误:在解包可选值时意外发现nil
就像我说的那样nil
。当然,我可以通过revealViewController()
签入来避免这种情况,但是FirebaseAuth
将无法正常工作,因为它没有注册。
奇怪的是,至少对我而言,下次MainViewController
保存我的凭据并且应用程序直接在performSegue
启动后,一切都会正常运行。唯一的问题是我第一次登录或退出并再次登录。登录成功后我MainViewController
启动 time energy
0 2018-01-01 00:15:00 0.0000
1 2018-01-01 00:30:00 0.0000
2 2018-01-01 00:45:00 0.0000
3 2018-01-01 01:00:00 0.0000
4 2018-01-01 01:15:00 0.0000
5 2018-01-01 01:30:00 0.0000
6 2018-01-01 01:45:00 0.0000
7 2018-01-01 02:00:00 0.0000
8 2018-01-01 02:15:00 0.0000
9 2018-01-01 02:30:00 0.0000
10 2018-01-01 02:45:00 0.0000
11 2018-01-01 03:00:00 0.0000
12 2018-01-01 03:15:00 0.0000
13 2018-01-01 03:30:00 0.0000
14 2018-01-01 03:45:00 0.0000
15 2018-01-01 04:00:00 0.0000
16 2018-01-01 04:15:00 0.0000
17 2018-01-01 04:30:00 0.0000
18 2018-01-01 04:45:00 0.0000
19 2018-01-01 05:00:00 0.0000
20 2018-01-01 05:15:00 0.0000
21 2018-01-01 05:30:00 0.9392
22 2018-01-01 05:45:00 2.8788
23 2018-01-01 06:00:00 5.5768
24 2018-01-01 06:15:00 8.6660
25 2018-01-01 06:30:00 15.8648
26 2018-01-01 06:45:00 24.1760
27 2018-01-01 07:00:00 38.5324
28 2018-01-01 07:15:00 49.9292
29 2018-01-01 07:30:00 64.3788
。
谁能告诉我问题出在哪里?感谢
答案 0 :(得分:1)
我在项目中使用SWRevealViewController
登录屏幕。
我如何处理用户登录是:
然后检查已登录的用户是否已在didFinishLaunchingWithOptions
文件中的AppDelegate
内登录。
if (userDefaults.object(forKey:"user") != nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController")
self.window?.makeKeyAndVisible()
}
如果用户已登录,则显示MainViewController。
然后在viewDidLoad
的{{1}}中添加了以下代码。
MainViewController
我希望这会对你有所帮助。
答案 1 :(得分:0)
目前,我找到了适用于我的方案的解决方案。如果有人知道问题是什么,请解释。我很高兴将您的答案标记为正确答案。我不知道SWRevealViewController
或我的方法中的错误是不正确的。所以我做的是:
我在MainViewController
viewWillAppear
中进行了检查用户是否已登录,如下所示:
override func viewWillAppear(_ animated: Bool) {
Auth.auth().addStateDidChangeListener() {
auth, user in
if user == nil {
let loginController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController
self.present(loginController!, animated: true, completion: nil)
}
}
}
之后,当用户成功登录时,我只需dismiss
LoginViewController
并在MainViewController
中处理必要的用户身份验证。我测试了这种方法似乎它正在发挥作用。我对SignUpViewController
所做的一样
感谢所有试图提供帮助的人。