2017-10-19 4 views
3

Video of web view reloading after shown on screenデキュー時に `UITableViewCell`の中の` UIWebView`を再読み込みしないようにする方法はありますか?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = UITableViewCell() 

    if indexPath.row == 17 { 
     let _cell = tableView.dequeueReusableCell(withIdentifier: "webCell") as! WebviewTableViewCell 

     let webView = UIWebView() 

     webView.frame = _cell.contentView.bounds 
     webView.scalesPageToFit = true 

     let webViewURL = "https://www.reddit.com/" 
     var _request = URLRequest(url: URL(string: webViewURL)!) 
     _request.cachePolicy = .returnCacheDataElseLoad 
     webView.loadRequest(_request) 

     _cell.contentView.addSubview(webView) 

     return _cell 
    } 

    cell.textLabel?.text = "sample cell \(indexPath.row + 1)" 

    return cell 
} 

私は、Webビューのキャッシュされたコピーを提供するために、上記のコードを使用しています。ただし、Webビューのセルが画面外になるたびに、テーブルビューはWebビューのコンテンツをリロードします。セルが画面外に出るたびに読み込むのではなく、Webビュー内で一度だけページを読み込む方法は?どんな援助も大いに評価され、投票されるでしょう。ありがとうございました。

答えて

0

あなたのコードは、dequeueReusableCellのキャッシュ機能をまったく使用していないことを示しています。 キャッシュ(キュー)からセルを取得してから、新しいWebビューを追加します。

解決策は、WebviewTableViewCellinit/storyboardにウェブビューを作成することです。

+1

、それを試してみてください私は、専用のセルクラスとストーリーボードのそれのtableViewでその対応を作成しました。 'cellForRow'では' _request.cachePolicy = .returnCacheDataElseLoad'を使用していますが、まだページがリロードされています。私を助けてください。 –

0

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
let cell = UITableViewCell() 

if indexPath.row == 17 { 
    let _cell = tableView.dequeueReusableCell(withIdentifier: "webCell") as! WebviewTableViewCell 

    If _cell.contentView.viewWithTag(100) == nil 
{ 
    let webView = UIWebView() 
     webView.tag=100; 
    webView.frame = _cell.contentView.bounds 
    webView.scalesPageToFit = true 

    let webViewURL = "https://www.reddit.com/" 
    var _request = URLRequest(url: URL(string: webViewURL)!) 
    _request.cachePolicy = .returnCacheDataElseLoad 
    webView.loadRequest(_request) 

    _cell.contentView.addSubview(webView) 
} 

    return cell; 
} 

cell.textLabel?.text = "sample cell \(indexPath.row + 1)" 

return cell 

}

関連する問題