我有一个带有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)
}
}
答案 0 :(得分:2)
自iOS 8起,它是bug。有一种解决方法:
DispatchQueue.main.async {
present(...) or dismiss(...)
}