UITabBarControllerを久々に見ると??って感じなんですが、スワイプで遷移する方法はわりと簡単でした。通常のタップで遷移はストーリーボード上で行っていますが正直あんまり覚えてないです。また最初から付けるときがあったら記事にしたいと思います・・・・。
まずUITabBarというのはこういう下のボタンをタップすると画面遷移するやつ
よくみるやつです。
これをスワイプで画面切り替えする方法です。
(ちなみに画像は私のアプリpocket時間割ですぞ)
まずUISwipeGestureRecognizerを用意します。
var swipe:UISwipeGestureRecognizer?
そして適当にviewDidLoadの中にでも書いていきましょう
override func viewDidLoad() {
super.viewDidLoad()
swipe = UISwipeGestureRecognizer()
//スワイプの方向を決める
swipe!.direction = .Right
//スワイプするときの指の本数
swipe!.numberOfTouchesRequired = 1
//スワイプしたときのアクション
swipe!.addTarget(self, action: "swipeRight")
//viewにスワイプジェスチャーを配置
self.view.addGestureRecognizer(swipe!)
}
後はスワイプしたときのアクションを書きます
func swipeRight(){
self.tabBarController!.selectedIndex = 1
}
このself.tabBarController.selectedIndexはUITabBarControllerに設定した配列の順だそうで。
ストーリーボード上のBarItemのタグの番号ではないですので注意です
普通に横並びで0,1,2で番号がついていると思われるのですが、とりあえずどこに飛ぶか試してみると良いと思います!
それぞれのViewControllerに右スワイプで移動、左スワイプで移動を付け足せば遷移するようになります。
全体のコード
class ViewController:UIViewController{
var swipe:UISwipeGestureRecognizer?
override func viewDidLoad() {
super.viewDidLoad()
swipe = UISwipeGestureRecognizer()
swipe!.direction = .Left
swipe!.numberOfTouchesRequired = 1
swipe!.addTarget(self, action: "swipeLeft")
self.view.addGestureRecognizer(swipe!)
}
func swipeLeft(){
print("swipeLeft")
self.tabBarController!.selectedIndex = 1
}
}
LeftとRightが先ほどと入れ替わっているので少し注意です。。。
スワイプで移動できるんだーってわかりやすくするにはアニメーションとかつけた方がいいとは思います(頑張ります)
参考リンク
Additional Notes追記
Swift4で
おきかえ〜
override func viewDidLoad() {
super.viewDidLoad()
let swipe = UISwipeGestureRecognizer()
swipe.direction = .left
swipe.numberOfTouchesRequired = 1
swipe.addTarget(self, action: #selector(self.swipeLeft(sender:)))
self.view.addGestureRecognizer(swipe)
}
@objc func swipeLeft(sender:UISwipeGestureRecognizer) {
self.tabBarController?.selectedIndex = 1
}
selectedIndexするだけで遷移できるもんだっけ。記憶ないや。
最近はこういうやり方ではなくUIPageViewControllerと組み合わせて使ってます。
コメントはありません。
現在コメントフォームは工事中です。