[英]Parse - How do I check for a logged in user before the view loads?
我試圖在確定是顯示登錄/注冊視圖控制器還是登錄視圖控制器之前驗證是否存在用戶。 我遇到的問題是要檢查用戶的存在,我必須等待viewDidAppear
,因為由於某種原因,如果我在viewDidLoad
運行檢查,用戶總是nil
。
我正在為我的用戶系統使用Parse,但是我不確定這是否是問題的一部分。 下面的代碼可以正常工作,除了ViewController
的視圖在執行if(PFUser.currentUser() != nil)
行之前的一瞬間被加載。
我希望能夠在viewDidLoad
運行用戶簽入,以便視圖不必實際出現,但是如果我這樣做,則用戶總是返回nil
。
我曾嘗試在登錄/注冊屏幕之前添加空白視圖控制器,但這僅會加載白色屏幕一秒鍾。 我嘗試在情節提要啟動屏幕中執行此操作,但是不允許這樣做(我相信有充分的理由),我可以創建一個視圖作為啟動屏幕的副本並從那里運行它,但這似乎有點像hack。
這樣做的正確方法是什么? 我認為這是大多數應用程序中通常要做的事情,我只是不知道在哪里執行if
語句。
import UIKit
import Parse
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if (PFUser.currentUser() != nil) {
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("summaryView")
self.presentViewController(vc, animated: true, completion: nil)
}
}
}
我不迅速知道,但是在Objective-C中,就像將它扔到您的目標網頁的viewDidLoad
一樣簡單:
PFUser *user = [PFUser currentUser];
if( user )
{
//user's session token is still valid, navigate to appropriate page
}
else
{
//display landing page to sign up / log in
}
您可以將代碼放入application(_:, didFinishLaunchingWithOptions:)
。
if let user = PFUser.currentUser() {
// Code to execute if user is logged in
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewControllerWithIdentifier("VCIdentifier")
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()
} else {
// Default screen you set in info plist.
}
嘗試將其放入init中,如下所示:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//code
}
這是在ViewController生命周期中應該調用的第一件事
或者,嘗試在viewWillAppear中使用int:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
//code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.