Огромная задержка при увольнении и представлении UIViewController - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть приложение, которое имеет 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)

    }
}

1 Ответ

0 голосов
/ 08 сентября 2018

Это ошибка начиная с iOS 8. Есть обходной путь:

DispatchQueue.main.async {
    present(...) or dismiss(...)
}
...