

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

[code]

    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)
        }
    }
    
[/code]


CC BY-SA 4.0
2018-09-06T03:51:03.830
48136
2018-09-06T06:19:03.530
2018-09-06T06:19:03.530
5519
21142
question
swift ios xcode swift4
UIViewControllerで3D TouchのPeekとPopをすると選択されるセルがずれる