2015-08-30 116 views
-2

我目前正在用swift開發iOS應用程序。我需要做一個登錄屏幕。
我想要做的是:第一次用戶打開應用程序時,將顯示登錄屏幕,但是一旦用戶登錄(我知道它是因爲我在用戶登錄時將服務器的會話令牌保存在NSUserDefaults中)應用程序將直接啓動主屏幕。
我想知道什麼是正確的方式來實現這一點(告訴應用程序顯示哪個屏幕)。我嘗試2種方式:什麼是快速執行登錄屏幕的正確方法

  1. 在加載主屏幕中的應用程序,並且如果沒有標記的是,目前的LoginViewController。我這樣做的問題是,當我運行應用程序時,它說LoginViewController不在窗口層次結構中。
  2. AppDelegate我檢查是否有令牌,並根據我的結果LoginViewControllerMainViewControllerrootViewController。問題在於,將rootViewControllerLoginViewController更改爲MainViewController時,需要很長時間才能更改。

有沒有更好的方法來實現這個目標?哪一個是最好的?感謝你們。

回答

1

我建議您在MainViewController之前啓動應用程序,並在沒有令牌時將LoginViewController顯示爲modal。通過這種方式,例如當令牌過期時,您可以在應用程序的其他部分再次顯示LoginViewController

而......當然......如果你想要一點安全性,不要在nsuserdefault上存儲auth令牌。

+0

謝謝你的回答。這是我所做的第一個選項,但xcode抱怨'LogionViewController'不在窗口層次結構中。 'MainViewController'和'LoginViewController'在不同的故事板中。我應該怎麼做才能避免這個問題? – serenhopy

+0

並感謝您的安全建議!我應該在哪裏存儲令牌? – serenhopy

+1

您需要在'MainViewController'的'viewDidAppear'之後顯示'LoginViewController'。如果您在收到該錯誤之前嘗試顯示它。身份驗證令牌應存儲在鑰匙串中。 – IgnazioC

相關問題