无法从像 XMLParser 这样的异步函数调用 Segue
Can't Call Segue from Async Function like XMLParser
在我的 VC 中,我调用了一个 XML 网络服务。根据结果,我可能会转向另一个 VC。我已经从我的代码中删除了业务逻辑,只留下重要的部分。这是我的代码的简短版本:
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
performSegue(withIdentifier: "userDidRequestReset", sender: nil)
}
我什至有一个 prepareForSegue 并且它被调用:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! ResetViewController
destinationVC.username = txtUsername.text!
}
但是,无论有没有 prepareForSegue,它实际上都不会转到下一个 VC。为什么它不起作用?
注意:我也试过添加 self.在 performSegue 之前,但仍然没有运气。
编辑: 我的 performSegue
在按钮操作等其他地方工作得很好,只是在 XML 解析器函数中没有。
也许从主线程执行 segue 就可以完成这项工作:
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
DispatchQueue.main.async {
performSegue(withIdentifier: "userDidRequestReset", sender: nil)
}
}
在我的 VC 中,我调用了一个 XML 网络服务。根据结果,我可能会转向另一个 VC。我已经从我的代码中删除了业务逻辑,只留下重要的部分。这是我的代码的简短版本:
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
performSegue(withIdentifier: "userDidRequestReset", sender: nil)
}
我什至有一个 prepareForSegue 并且它被调用:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! ResetViewController
destinationVC.username = txtUsername.text!
}
但是,无论有没有 prepareForSegue,它实际上都不会转到下一个 VC。为什么它不起作用?
注意:我也试过添加 self.在 performSegue 之前,但仍然没有运气。
编辑: 我的 performSegue
在按钮操作等其他地方工作得很好,只是在 XML 解析器函数中没有。
也许从主线程执行 segue 就可以完成这项工作:
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
DispatchQueue.main.async {
performSegue(withIdentifier: "userDidRequestReset", sender: nil)
}
}