UIViewControllerで3D TouchのPeekとPopすると選択されるセルがずれてしまいます。スクリーンショット(添付ファイル)の1番上のセルを3Dタッチすると3番目のセルのPeek画面が表示されます。同様に2番では4番目のPeek画面が表示されます。また、4番目と5番目のセルは3D TouchしてもPeek反応(FeedbackGeneratorの振動)がしません。
セルを普通にタッチしたときは、セルのズレがなくPlayBackViewControllerに遷移しています。
どなたか セルがずれる原因を教えていただけるでしょうか。
スクリーンショット
import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!

    let voiceTextArray = ["11111","222222","333333","444444","55555"]
    let dateTimeArray = ["dateTime1","dateTime2","dateTime3","dateTime4","dateTime5"]

    var savedRow = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self

        if traitCollection.forceTouchCapability == .available {
            registerForPreviewing(with: self, sourceView: view)
        } else {
            print("3D Touch Not Available")
        }
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return voiceTextArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "protoCell")as! ProtoTableViewCell

        cell.voiceTextLable.text = voiceTextArray[indexPath.row]
        cell.dateTimeLabel.text = dateTimeArray[indexPath.row]

        return cell
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "ShowPlayBackView" {

            let detailViewController = segue.destination as! PlayBackViewController

            let myIndexPath = self.tableView.indexPathForSelectedRow
            detailViewController.voiceText = voiceTextArray[(myIndexPath?.row)!]
        }
    }
}

import UIKit

extension ViewController : UIViewControllerPreviewingDelegate {

    func previewingContext(_ previewingContext: UIViewControllerPreviewing,
                           viewControllerForLocation location: CGPoint) -> UIViewController? {

        guard let indexPath = tableView.indexPathForRow(at: location),
            let cell = tableView.cellForRow(at: indexPath) else {
                return nil }

        guard let detailViewController =
            storyboard?.instantiateViewController(
                withIdentifier: "PlayBackViewController") as? PlayBackViewController else { return nil }

        print("=====indexPath.row:",indexPath.row)

        detailViewController.voiceText = voiceTextArray[indexPath.row]
        detailViewController.preferredContentSize =
            CGSize(width: 0.0, height: 600)

        previewingContext.sourceRect = cell.frame

        return detailViewController
    }

    func previewingContext(_ previewingContext: UIViewControllerPreviewing,
                           commit viewControllerToCommit: UIViewController) {
        show(viewControllerToCommit, sender: self)
    }
}