Swift Segue以编程方式需要很长时间

时间:2015-07-06 16:43:50

标签: ios swift segue

使用Swift和Xcode 6.4,我正在创建一个登录系统。它运作良好。我从网站获取XML数据并检查用户是否已登录。

    func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {

    if elementName == "isLoggedIn" {
        if elementValue == "true" {
            success = true
            println(success)
            println("IS HERE")
            self.performSegueWithIdentifier("LoginIsOk", sender: nil)

        }else if elementValue == "false"{
            success = false
            println(success)
        }
        elementValue = nil
    }  
}

当我运行APP时,需要1秒钟来“println(”IS HERE“)”。 所以我假设。

self.performSegueWithIdentifier("LoginIsOk", sender: nil)
之后执行

。但是显示另一个ViewController需要5秒钟。

如果我这样做,但在UIButton中,例如,点击它之后,它会立即显示第二个ViewController。

知道为什么在func解析器中花了这么长时间?感谢。

1 个答案:

答案 0 :(得分:3)

尝试将其置于不同的线程中:

dispatch_async(dispatch_get_main_queue(), {
  self.performSegueWithIdentifier("LoginIsOk", sender: nil)
})

出于这个原因,所有UI调用都应放在主线程中 - 我们希望UI能够快速实现!