title: indexPathForRow won't return the correct value
body: <p>I'm trying to use 3D Touch and everything is fine except in the function below I can't get the right value <code>indexPath</code> with <code>indexPathForRow(at: location)</code> when I'm scrolling. This function can't say if user scrolls the table or not and always set the first row that user can see in app as first one.</p>
  
  <p>My code:</p>
  
  <pre><code>func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -&gt; UIViewController? {
  
          guard let indexPath = workoutTable?.indexPathForRow(at: location) else {return nil }
          guard let cell = workoutTable?.cellForRow(at: indexPath) else {return nil }
          guard let workoutDetailPeek = storyboard?.instantiateViewController(withIdentifier: "WorkoutDetailPeek") as? WorkoutDetailPeek else {print("else31"); return nil }
  
          workoutDetailPeek.workoutId = "\(Int(workout[(indexPath as NSIndexPath).row].workoutId)!-2)"
          workoutDetailPeek.preferredContentSize = CGSize(width: 400.0, height: 267.0)
          previewingContext.sourceRect = cell.frame
          return workoutDetailPeek
  }
  </code></pre>
  
  <p>I been through different 3D Touch implementation, but this function seems to works fine for everyone except me.</p>