2017-04-04 30 views
0

我是Swift Mac App开发的新手,我从登录窗口到显示登录URLRequest后的主窗口,以及在新的主窗口中创建另一个URLRequest的麻烦。如果我只是从一个窗口进入而不进行登录URLRequest,它可以正常工作。异步调用后运行模态

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

对不起,主窗口中的第二个URLRequest不会出现在后台线程中 – Tim

+0

我们需要为代码,你没有显示任何东西,这段代码没有做任何严重的事情 –

回答

0

不要在模态中运行你的主视图,模态应该用于对话框。所以你可以在模态下运行登录视图(并通过在应用程序上调用stopModal来完成)。在这种情况下,你可以使用像loadLoginView这样的水印,它与你当前的loadMainView(但没有这个self.view.window?.close()调用)具有类似的实现。主视图将在应用程序启动时从nib加载,但你必须张贴更多的代码(你的应用程序初始化看起来像?)得到的帮助。