簡體   English   中英

解析-如何在視圖加載之前檢查登錄用戶?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM