在 api 调用中执行 segue 不起作用

Posted

技术标签:

【中文标题】在 api 调用中执行 segue 不起作用【英文标题】:Perform segue not working inside api call 【发布时间】:2016-04-30 20:34:28 【问题描述】:

我有一个使用 API 调用检查凭据的登录页面,最后我将主页显示为带有 performSegue 的模态,如下所示:

@IBAction func loginPressed(sender: UIButton) 
    ApiHelper.userService  (service) -> Void in
        let query = GTLUserController.queryForLoginUser(email,password)
        service.executeQuery(query)  (ticket: GTLServiceTicket!, object: AnyObject!, error: NSError!) -> Void in
            if(error != nil)
                return
            

            //Code...
            self.performSegueWithIdentifier("mainSegue", sender: self)
        
    

当我第一次启动应用程序时,segue 工作正常,但是当我终止应用程序(使用滑动)并再次登录时,segue 无法正常工作,我看到主页 1 秒然后又重新登录。

注意:当我在 API 调用之外使用时,segue 工作正常

提前致谢

【问题讨论】:

【参考方案1】:

永远不要在后台线程上更新 UI,而是像这样在主线程上执行 segue

dispatch_async(dispatch_get_main_queue()) 
  self.performSegueWithIdentifier("mainSegue", sender: self)

【讨论】:

我已经尝试过了,但它不起作用。只有当我杀死应用程序并重新启动它时,我的 segue 才不起作用。第一次在没有主线程的情况下完美运行

以上是关于在 api 调用中执行 segue 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从 didSelectRowAtIndexPath 执行 segue 不起作用

使用标识符执行 segue 在 swift 2 中不起作用

在 onclick 条形图列之后,Segue 在 coreplot Graphview.m 中不起作用

在Angular中使用websocket发布api调用不起作用

segue 在简单的 segue 测试中不起作用

目标 C:后退按钮 segue 不起作用