title: iOS/Swift: QLPreviewController shows blank page in iOS11
body: <p>I've tried use QLPreviewController for file(.txt, .pdf, .docx, .xlsx, etc.) preview in my iOS project, but it is not working well in iOS 11: it shows blank page whatever use device or simulator. In iOS 10.3.1(simulator) it is working well, and everything is fine.</p>
  
  <p>The below is the detail informations:</p>
  
  <p><strong>Environment:</strong> </p>
  
  <pre><code>Xcode version: 8.3.3, 9.0.1
  Device: iPhone 7 Plus, Simulator
  iOS version: 11.0.3(iPhone 7 Plus), 10.3.1(Simulator), 11.0.1(Simulator)
  Swift version: 3.1/3.2
  </code></pre>
  
  <p><strong>Code</strong></p>
  
  <pre><code>import UIKit
  import QuickLook
  
  class QuickViewController: UIViewController {
  
      var url: String!
      var filePath: URL!
      var msg: Message! {
          didSet {
              url = msg.content
              // create document folder url
              let documentsURL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
              // let tempDirectory = URL(fileURLWithPath: NSTemporaryDirectory())
              filePath = documentsURL.appendingPathComponent((msg.content as NSString).lastPathComponent)
          }
      }
  
      @IBOutlet weak var contentView: UIView!
  
  
      // MARK: - Initialisation
  
      override func viewDidLoad() {
          super.viewDidLoad()
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
      override func viewDidAppear(_ animated: Bool) {
          super.viewDidAppear(animated)
          loafFile()
      }
  
  
      func loafFile() {
          if FileManager.default.fileExists(atPath: filePath.path) {
              quickLookFile()
          } else {
              AppManager_Inst.download(url: "\(url!)", destinationUrl: filePath, completion: { [unowned self](succeed, msg) in
                  if succeed {
                      self.quickLookFile()
                  } else {
                      print(msg)
                  }
              })
          }
      }
  
      func quickLookFile() {
  
          print(filePath.path)
  
          /// Trying to read the file via FileManager to check if the filePath is correct or not
          let data = FileManager.default.contents(atPath: filePath.path)
          print(data)
  
          if QLPreviewController.canPreview(filePath as NSURL) {
              let QLController = QLPreviewController()
              QLController.delegate = self
              QLController.dataSource = self
              QLController.view.frame = self.contentView.frame
              self.view.addSubview(QLController.view)
          } else {
              print("file cannot to preview")
          }
      }
  
  }
  
  
  extension QuickViewController: QLPreviewControllerDataSource, QLPreviewControllerDelegate {
  
      // QLPreviewControllerDataSource
  
      func numberOfPreviewItems(in controller: QLPreviewController) -&gt; Int {
          return 1
      }
  
      func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -&gt; QLPreviewItem {
          return filePath as NSURL
      }
  
      // QLPreviewControllerDelegate
      func previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -&gt; Bool {
          return true
      }
  
  }
  </code></pre>
  
  <p>I'm not sure what I missing or something wrong here, please help.</p>
  
  <p>p.s.: I'll trying the code with iPhone 5c(iOS 10.3.1) later, and the result should update to here once I've done it.</p>