ios - 关闭和呈现 UIViewController 时出现巨大延迟
问题描述
我有一个具有UICollectionView
. 当用户点击单元格(而不是单元格本身)上的按钮时,UIViewController
会出现自定义弹出窗口,其中包含以UITableView
. 当用户点击其中一个选项(行)时,当前的自定义弹出窗口将UIViewController
被关闭并UIViewController
呈现一个新的。我使用委托/协议来做到这一点。
我的问题如下。当我点击我的一个选项时,会出现 1-4 秒的很长的延迟,然后才会关闭它并UIViewController
呈现另一个。在其他时候,它是即时的,没有延迟。当出现延迟时,我在控制台中发现了以下错误消息。任何人都可以建议吗?我目前遇到 indexPath[0,2] 行的这个问题 - 请参见下文。
错误信息:
myApplicationName[7141:3954956] [BoringSSL] 函数boringssl_session_errorlog:第2881行[boringssl_session_read] SSL_ERROR_ZERO_RETURN(6):操作失败,因为连接已通过close_notify警报彻底关闭
我UITableView
点击一行的代码:
class MoreOptionsOnPDFViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
....
var moveDocDelegate: MoveFolder!
// TAP ON ROW
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath == [0,0]{ // EDIT FILE NAME
print("EDIT FILENAME")
} else if indexPath == [0,1]{ // EDIT TAGS
print("EDIT DOCUMENT")
}else if indexPath == [0,2]{ // MOVE FOLDER
guard let scanID = self.scanID else{return}
if let scanID = self.scanID{
// SHOW MOVE DOCUMENT UIVIEWCONTROLLER
dismiss(animated: true) {
self.moveDocDelegate.moveDocument(scanId: scanID)
}
}
} else if indexPath == [0,3]{ // SHARE DOCUMENT
print("SHARE DOCUMENT")
if let pdfURL = self.pdfURL{
self.sharePDF(pdfURL: pdfURL)
}
} else if indexPath == [0,4]{ // BIN
}
}
}
其他类:
class CollectionViewFolder: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate ,UICollectionViewDelegateFlowLayout, MoreInfoDocument, MoveFolder{
// SHOW MOVE FOLDER OPTIONS
func moveDocument(scanId: String) {
let moveFolderVC = storyboard?.instantiateViewController(withIdentifier: "movefolder") as! MoveFolderViewController
moveFolderVC.scanId = scanId
present(moveFolderVC, animated: true, completion: nil)
}
}
解决方案
这是 iOS 8 以来的一个错误。有一个解决方法:
DispatchQueue.main.async {
present(...) or dismiss(...)
}
推荐阅读
- android - Dagger 2 在使用 Kotlin 编码时抛出编译错误
- python - 尝试在 DataFrame 中测试 NoneType 或 Empty Cell 但方法不起作用
- angular - 如何在特定版本的 Chrome 上测试我的项目
- python-3.x - 为什么我无法使用 oneHot 对我的数据标签进行编码?
- java - 如何在 java 中使用 .sef 运行 XSLT 转换
- java - Gradle构建找不到包'java.net.http'
- c - 如何使用 Bluez Profile1 DBus API 注册连接回调
- ios - 替换出现的逗号或点
- sql-server - SQL Server 如何处理对链接服务器的失败查询?
- c++ - 如何处理线程池的可变参数模板中的占位符