2017-11-24 10 views
1

ユーザーが認証されている場合、私の最初のViewControllerののviewDidLoadで、 がperformSegueviewDidLoadでperformSegueに遅延を追加するにはどうすればよいですか?

override func viewDidLoad() { 
    super.viewDidLoad() 


    Auth.auth().addStateDidChangeListener() { (auth, user) in 
     if user != nil{ 

      self.ballClipRotatePulse.startAnimating() 
      self.performSegue(withIdentifier: "goToHome1", sender: self) 

     } 
    } 
} 

で自動的に自宅に送られますが、私は、ユーザーが希望するので、最初のローディングアニメーションを参照してください、どのように私はそれを行うことができますperformSegueは、self.ballClipRotatePulse.startAnimating()より2秒遅れて開始されますか?

+0

あなたはviewDidAppearで 'performSegue'を呼び出すことができますが、それでもタイマーを遅らせることができます – iPatel

+0

あなたはdispatchQueueを使用できます –

+0

私はこのようなことをやろうとした初めてですか? – arc4Random

答えて

1

構文は単純です:

Auth.auth().addStateDidChangeListener() { (auth, user) in 
    if user != nil { 
     self.ballClipRotatePulse.startAnimating() 
     // to run something in 2 seconds 
     DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { 
      // your code here 
      self.performSegue(withIdentifier: "goToHome1", sender: self) 
     } 
    } 
} 
+0

ありがとうございます!私はできるだけ早く答えを承認する – arc4Random

0

ちなみにこの

let when = DispatchTime.now() + 2.0 // 2 is desirable delay 
DispatchQueue.main.asyncAfter(deadline: when){ // your postponed code } 

を試してみて、いくつかのインターフェイス要素は、遅延期間中にユーザーが触れることができることを忘れて、そのため、あなたのアプリはありません予期しない動作をする可能性があります。より良い解決策は、performSegueをアニメーション完了ハンドラから呼び出すことです。

関連する問題