2017-08-10 27 views
-1

我使用的是基於火力的應用程序,其中我想跳過登錄頁面,如果用戶已經登錄。我的應用程序最初啓動的登錄頁面上,所以這裏是我的代碼,如果用戶已經立即Segue公司登錄。如何確定首次加載應用程序時沒有錯誤動畫的第一個視圖控制器?

override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     if FIRAuth.auth()?.currentUser != nil { 
      DispatchQueue.main.async { 
       self.performSegue(withIdentifier: self.loginSegue, sender: nil) 
      } 
     } 
    } 

這如預期運作,然而,一秒鐘,你可以看到登錄頁面它塞格斯正常了。我的segue關閉了它的動畫,並且我希望主要的VC可以在屏幕上看不到任何符號。

+0

是否設置爲登錄的viewController作爲故事板初期的viewController?如果是,那麼刪除它,你需要在appDelegate的didLaunch方法中設置一個標誌,並檢查用戶是否已經登錄,然後將你的家庭VC設置爲一個根視圖控制器,其他方式發送到登錄VC。 – Pankaj

+0

而看到https://github.com/mattneub/RegistrationExample – matt

+0

沒關係,我固定的問題 –

回答

1

應用代表是做這項工作的理想場所。讓本次測試中的applicationDidFinishLaunching方法,只是設置您的主視圖控制器作爲您的導航控制器的第一個視圖控制器,然後讓你的導航控制器RootViewController的。基於火力地堡當前驗證狀態

+0

謝謝!我有它的工作,但現在當我按下注銷按鈕時,登錄屏幕上有一個我不想要的導航欄。這是因爲我正在使用註銷按鈕,而不是解僱我之前完成的操作。編輯***我固定它通過使用禮物模態賽格,再次感謝你! –

+0

歡迎!如果解決了您的問題,請將答案標記爲已接受。 – Shubham

0

呈現第一視圖控制器可以通過兩種方式來完成: -

  1. 檢查在AppDelegate中的用戶身份驗證SATE:不可取,因爲它可能需要很長時間,有一個結果由於錯誤/慢速的網絡連接或其他問題,導致甚至可能無法啓動您的應用程序。
  2. 創建一個單獨的加載頁面作爲您的FirstViewController(我不是指launchStoryboard),它使用該應用程序檢查當前用戶的身份驗證狀態:建議,因爲這裏不僅可以通過async檢查用戶身份驗證狀態調用,然後繼續瀏覽到所需的viewController,但是您也會將LoadViewController呈現給用戶,並且如果網絡連接出錯,還可以向用戶發出警告。
相關問題