Динамический размер содержимого WebView внутри UICollectionView - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь изменить размер динамического HTML-содержимого WKWebView внутри UICollectionViewCell, ссылаясь на collectionViewCell.Работает нормально, но иногда выдает неожиданно найденный ноль при развертывании необязательного значения в строке ниже:

let cell:CollectionViewCell = collectionView!.cellForItem(at: indexpath) as! CollectionViewCell

Вот мой код:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
{
        let indexpath: IndexPath = IndexPath.init(item: self.pageControl.currentPage, section: 0)
        let cell:CollectionViewCell = collectionView!.cellForItem(at: indexpath) as! CollectionViewCell
        cell.newsWebView?.evaluateJavaScript("document.readyState", completionHandler: { (result, error) in
            if result == nil || error != nil {
                return
            }
            cell.newsWebView?.evaluateJavaScript("document.body.offsetHeight", completionHandler: { (result, error) in
                if let height = result as? CGFloat {
                    cell.webviewHeightConstraint?.constant = height
                }
            })
    CustomeLoader.instance.hideLoader()
}

фатальная ошибка: неожиданно найденный нольпри развертывании необязательного значения

1 Ответ

0 голосов
/ 16 мая 2019

Попробуй это.Это может произойти из-за задержки рендеринга.

let when = DispatchTime.now() + 1
DispatchQueue.main.asyncAfter(deadline: when) {
       let indexpath: IndexPath = IndexPath.init(item: pageControl.currentPage, section: 0)
        let cell:CollectionViewCell = collectionView!.cellForItem(at: indexpath) as! CollectionViewCell
         cell.newsWebView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in
            if complete != nil {
                cell.newsWebView.evaluateJavaScript("document.body.offsetHeight", completionHandler: { (height, error) in
                    cell.webviewHeightConstraint.constant = height as! CGFloat
                })
            }

        })         
}
...