2017-03-06 10 views
0

私は、UIAlertControllerで実装されたローディングインジケータを持っています。サーバーに認証リクエストを送信すると、ロードインジケータが起動します。リクエストが成功すると、別のViewControllerに移動し、ロードインジケータを非表示にする必要があります。 segueを実行する前に、AlertControllerの終了通知が完了するまで待つ必要があります。上のそのビューウィンドウ階層ではありません提示しようとしています - 警告AlertControllerのアクションなしのSegue

private var loadingIndicator: UIAlertController? 

func navigateToMonitoring() { 
     DispatchQueue.global(qos: .background).async { 
      if let indicator = self.loadingIndicator { 
       while !indicator.isBeingDismissed { continue } 
       DispatchQueue.main.async { 
        self.performSegue(withIdentifier: "Monitoring", sender: self) 
       } 
      } 
     } 
    } 

しかし、この方法を実行したときに、私がメッセージを持っている:だから私は、このようなロジックを持っています! - そしてセグは実行されません。

どうすればこの問題を解決できますか?

(スウィフト3、Xcodeの8)

+0

**このような繰り返しループは恐ろしいものです。完了ハンドラを使用します。 – vadian

答えて

0

あなたは多分、アラートを作成し、その参照を格納し、警告を表示し、APIを呼び出して、そのAPIの完了ブロックでは、あなたはそれを却下し、セグエを行うことができこれがあなたにとって意味をなされることを願っています。

関連する問題