gpt4 book ai didi

ios - 如何在 SWIFT 中关闭没有任何操作的 UIAlertController?

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:08 24 4
gpt4 key购买 nike

我在下载图像时显示一个 UIAlertController。下载完成后,我想推送一个 View Controller 。我在控制台中遇到错误,因为我没有关闭警报 Controller :

pushViewController:animated: called on <UINavigationController 0x7fb190c6ee00> while an existing transition or presentation is occurring; the navigation stack will not be updated.

在我的主视图 Controller 中,下载完成后,我推送另一个 View :

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

//....

var alert = UIAlertController(title: "Alert", message: text, preferredStyle: UIAlertControllerStyle.Alert)
self.presentViewController(alert, animated: true, completion: nil)


dispatch_async(dispatch_get_main_queue(), {
if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
self.performSegueWithIdentifier("postview", sender: self)

}
})
}

我尝试了 dismissViewControllerAnimated 但我有完全相同的错误:

dispatch_async(dispatch_get_main_queue(), {
if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
alert.dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("postview", sender: self)

}
})

最佳答案

在关闭前一个 View Controller 之前,您不应该调用 performSegueWithIdentifier。要正确计时,请从完成处理程序执行:

dispatch_async(dispatch_get_main_queue(), {
if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
alert.dismissViewControllerAnimated(true, completion: {
self.performSegueWithIdentifier("postview", sender: self)
})
}
})

现在执行 segue 的调用在解雇结束之前不会开始,从而防止出现您看到的错误。

关于ios - 如何在 SWIFT 中关闭没有任何操作的 UIAlertController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27334214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com