     
     func renderPlayView() {
         let request = dataController?.requestVideoDetailDataUrl()
+        weak var weakSelf = self
         let viewModel: DHVideoPlayViewModel = DHVideoPlayViewModel(request: request!)
         DispatchQueue.main.async {
-            self.videoPlayeView = DHVideoPlayView(frame: CGRect(x: 0, y: 0, width: kVideoPlayViewWidth, height: kVideoPlayViewHeight))
-            self.videoPlayeView?.bindDataWithViewModel(viewModel: viewModel)
-            self.view.addSubview(self.videoPlayeView!)
+            let strongSelf = weakSelf
+            strongSelf?.videoPlayView = DHVideoPlayView(frame: CGRect(x: 0, y: 0, width: kVideoPlayViewWidth, height: kVideoPlayViewHeight))
+            strongSelf?.videoPlayView?.bindDataWithViewModel(viewModel: viewModel)
+            strongSelf?.view.addSubview(self.videoPlayView!)
+            strongSelf?.setContentView()
         }
+    }
+    
+    func setContentView() {
+        videoPlayView?.webView?.navigationDelegate = self
+        loadingView = addLoadingViewForViewController(self)
     }
     
     override func viewDidLoad() {

        player?.playVid(vid, quality: kYYVideoQualityHD2, password: nil, from: 0)
    }
    
    func handleVideoData() {
        dataController = DHVideoPlayDataController()
        dataController?.requestVideoDetailWithCallback(ykvid: ykvid!, callback: {

//

import UIKit
import WebKit

class DHVideoPlayViewController: DHBaseDetailViewController, YYMediaPlayerEvents, WKNavigationDelegate {

    var ykvid: String?
    var player: YYMediaPlayer?
    var playerManager: YTEngineOpenViewManager?
    
    var dataController: DHVideoPlayDataController?
    var videoPlayView: DHVideoPlayView?
    var loadingView: DHLoadingView?
    
    func initPlayer() {
        player = YYMediaPlayer()
