Swift 3アプリケーションには、UITableView
を含むhomeViewControllerがあります。テーブルのセルがクリックされると、detailViewController
と表示されます。子供のようにaddChildViewController(vc)
を使って表示します。私はhomeViewControllerに戻るためにバックジェスチャーを実装したいと思います。私は、デバイスのデフォルトMailアプリケーションのバックモードと同じ結果を得たいと考えています(たとえば、受信トレイに入っていたときにメールのホームに戻るバックモード)。言い換えれば、ジェスチャーを使用すると、ユーザーはビューを左から右にドラッグしてからホームビューが表示されるまで左から右にドラッグしたり、ビューを右から左にドラッグして詳細ビューを画面全体に保持することができます。私はUIPanGestureRecognizer
を使ってそれをしようとしましたが、私のビューは左右に移動し、時には右側からホームビューを表示します。要するに、私が望む結果は、メールアプリケーションのバックジェスチャー機能と同じです。スウィフト3:バックジェスチャー
これは私のコードです:
var rightSwipe: UIPanGestureRecognizer = UIPanGestureRecognizer()
self.rightSwipe = UIPanGestureRecognizer(target: self, action: #selector(self.handleSwipes(_:)))
self.view.addGestureRecognizer(rightSwipe)
func handleSwipes(_ sender: UIPanGestureRecognizer){
if self.rightSwipe.state == .began || self.rightSwipe.state == .changed {
let translation = rightSwipe.translation(in: self.view)
// note: 'view' is optional and need to be unwrapped
//print("translation is : \(translation)")
if(translation.x > 0 && translation.y == 0.0){
self.rightSwipe.view!.center = CGPoint(x: self.rightSwipe.view!.center.x + translation.x, y: self.rightSwipe.view!.center.y + translation.y)
rightSwipe.setTranslation(CGPoint.zero, in: self.view)
}
}
}
この動作が必要な場合は、ナビゲーションスタックでViewControllerを押します。 –
もっと説明していただけますか? –
addChildではなく 'self.navigationController.pushViewController(vc、animated:true)'をテストしましたが、セルをクリックするとdetailViewControllerは表示されません。それは私のhomeViewControllerはUIViewControllerなので? –