2017-04-04 16 views
0

私はSwift Mac Appの開発に慣れていません。ログインウィンドウからログインURLRequestの後にメインウィンドウを表示し、新しいメインウィンドウに別のURLRequestを作成することに悩まされています。ログインURLRequestを作成せずにウィンドウを1つだけ開いても問題ありません。非同期呼び出し後にモーダルを実行しました

func loadMainView() { 

    self.view.window?.close() 

    let storyboard = NSStoryboard(name: "Main", bundle: nil) 
    let mainWindowController = storyboard.instantiateController(withIdentifier: "MainViewController") as! NSWindowController 

    if let mainWindow = mainWindowController.window { 

     let application1 = NSApplication.shared() 
     application1.runModal(for: mainWindow) 
    } 
} 

func tryLogin(_ username: String, password: String) { 

    Staff.login(username: self.username.stringValue, password: self.password.stringValue) { (completed, result, staff) in 
     // DispatchQueue.main.async { 
     if completed { 

      if result == .Success && staff != nil { 

       DispatchQueue.main.async(execute: { 
        self.loadMainView() 
       }) 
      } else { 

       self.dialogOKCancel(message: "Error", text: "Your credentials are incorrect") 
      } 

     } else { 
      print("error") 
     } 
    } 
} 

HTTPSConnection.httpGetRequestURL(token: token, url: digialOceanURL, mainKey: mainKeyVal) { (complete, results) in 

     DispatchQueue.main.async { 
      if complete { 

      } 
     } 

    } 

実行しないでself.loadMainView()を呼び出そうとしましたが、まだ運がありません。

助けてください。ありがとう

+0

あなたはいくつかのエラーを持っているか、「運がない」とは何を意味していますか? –

+0

メインウィンドウの2番目のURLRequestはバックグラウンドスレッドから出ません。 – Tim

+0

あなたは何も表示していませんでした。このコードは何も表示していません。 –

答えて

0

モーダルでメインビューを実行しないでください。ダイアログにモーダルを使用する必要があります。したがって、モーダルでログインビューを実行できます(アプリケーションでstopModalを呼び出して終了します)。その場合はloadLoginViewのようなsmthを使用することができますが、これは現在のloadMainViewと同様の実装になります(ただしこのself.view.window?.close()コールはありません)。またメインビューはアプリケーション起動時にnibからロードされます。あなたはそれに助けを得るために?)

関連する問題