IOSはTable Viewに3 D Touch機能を追加します。


この文章は実例を通して、Table Viewに3 D Touch機能と詳細な書き方を追加する方法を教えます。テストに従ってください。
Peek&Popは、iPhoneで実用的なハードウェア関連の機能であり、操作効率を向上させると同時に、鮮明な視覚表現を備えています。
Peek&Popは2つのプロセスの組み合わせであり、Peekは画面を軽く押してプレビューウィンドウをアクティブにすることを表しています。(パソコンの中でマウスがリンクした時に提示されたものを連想しますか?ただし、ここでは視覚的にもっと豊かになりました。)。
この機能を実現する最も簡単な方法は、StorryboardによりSegue(手動トリガモードのSegueを除く)を作成し、SegueにPeek&Popをチェックすることです。しかし、展示プロセスをカスタマイズしたいなら、コードで表示します。
この機能をコーディングによって実現するポイントの一つはプレビュー用のビューオブジェクトを提供することであり、このオブジェクトを提供する方法は3つあります。
完全なプログラムコードで作成し、ビューコントローラを初期化します。
XIB設計図、カスタムビューコントローラ類ファイルを通じて、init(nibName:bundle:)方法でビューを初期化します。
Storryboardでビューを設計し、StorryboardのinstantiateView Controller方法でこのビューを初期化します。
ネット上の他の教程は基本的に説明の方法1で、方法2、3はほとんど言及していません。方法2、3も一番間違えやすいところです。
ビューを作成するプロセスは多くなく、どの方法でも初期化が重要です。私たちが作成したビューコントローラ類の名称は、PrevewingView Controllerであると仮定します。
方法1は直接カスタムの初期化方法を使えばいいです。
方法2、3 Preview View Controller()を使うなら、次はエラーと問題を探し続けるのを待っています。筆者は当時ここで多くの時間を費やしました。方法2、3はいずれもUIファイルを介して作成されたビューであり、初期化方法は特定のものと標準的なものしか使用できないからである。具体的には:
XIB方式で作成したビューは、init(nibName:bundle:)メソッドで初期化します。
Storryboardで作成したビューは、instantiateView Controller法で初期化します。
以上の初期化方法をマスターしました。次は簡単になります。Peek&Popを全部で3ステップ完成します。ソースビューがMainView Controllerであると仮定して、プレビューするのはPreview View Controllerです。
MainView ControllerにUIView Controller Preview Delegateプロトコルを遵守させ、そのview DidLoad()方法にPeek&Popを登録する。
if trit Collection.forceTouch Capability=.available{
register ForPreview(with:self,sourceView:tablew)//sourceViewの使用はトリガが必要なviewを使用すればいいです。
)
プロキシメソッドを追加してプレビューを提供するビュー:preview ingContext(u:view Controller For Location:

// Peek   
func previewingContext(_ previewingContext: UIViewControllerPreviewing,
            viewControllerForLocation location: CGPoint) -> UIViewController?
{
  //        Cell
  guard
  let indexPath = tableView.indexPathForRow(at: location),
  let cell = tableView.cellForRow(at: indexPath)
  else {
    return nil
  }
  //       Cell
  //               ,        。
  previewingContext.sourceRect = cell.frame

  //        ,          ,    storyboard   。
  let previewVC = self.storyboard?.instantiateViewController(
    withIdentifier: "xxx") as! PreviewingViewController
  //             
  previewVC.xxx = self.xxx
  return previewVC
}  
プロキシを追加してプレビューを開きます。previewingContext(u:comit:

// Pop   
func previewingContext(_ previewingContext: UIViewControllerPreviewing,
              commit viewControllerToCommit: UIViewController)
{
  //          ,            Pop   。
  if xxx {
    show(viewControllerToCommit, sender: self)
    //             show   present
    // present(viewControllerToCommit, animated: true)
  }
}