2017-05-28 55 views
3

我想使用滑動手勢在標籤欄之間導航。什麼是最簡單的方法來做到這一點?我試過這樣的事情...使用滑動手勢在標籤欄之間導航

import UIKit 

class postAdViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) 
     view.addGestureRecognizer(leftSwipe)  
    } 

    func handleSwipes(sender:UISwipeGestureRecognizer) { 
     if (sender.direction == .left) { 
      let storyboard = UIStoryboard(name: "Main", bundle: nil) 
      let vc = storyboard.instantiateViewController(withIdentifier: "favourireviewcontroller") as! UIViewController 
      self.present(vc, animated: true, completion: nil) 
     } 
     if (sender.direction == .right) { 

     } 
} 

如果我試圖刷卡沒有任何反應。當向左滑動以下錯誤消息

無法識別的選擇發送到實例應用程序崩潰0x7f924380a730

回答

0

嘗試使用Swift 3選擇器語法:

let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes(_:)) 

像這樣

override func viewDidLoad() { 
    super.viewDidLoad() 

    nextButton.layer.cornerRadius = 7 

    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes(_:)) 
    //leftSwipe.direction = .right 
    view.addGestureRecognizer(leftSwipe) 
} 



func handleSwipes(_ sender: UISwipeGestureRecognizer) { 
    if (sender.direction == .left) { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "favourireviewcontroller") as! UIViewController 
     self.present(vc, animated: true, completion: nil) 
    } 

    if (sender.direction == .right) { 

    } 
} 

Swift 3介紹了這個特性,使編譯器能夠檢查你指定的function是否確實存在。因此比以前的概念更加節省。

1

那麼如果你想通過你導航tabBar你應該實施swipeGestureRecognizer.left.right再與tabBarController?.selectedIndex工作,是這樣的:

let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(swiped)) 
swipeRight.direction = UISwipeGestureRecognizerDirection.right 
self.view.addGestureRecognizer(swipeRight) 

let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swiped)) 
swipeLeft.direction = UISwipeGestureRecognizerDirection.left 
self.view.addGestureRecognizer(swipeLeft) 

func swiped(_ gesture: UISwipeGestureRecognizer) { 
    if gesture.direction == .left { 
     if (self.tabBarController?.selectedIndex)! < 2 { // set your total tabs here 
      self.tabBarController?.selectedIndex += 1 
     } 
    } else if gesture.direction == .right { 
     if (self.tabBarController?.selectedIndex)! > 0 { 
      self.tabBarController?.selectedIndex -= 1 
     } 
    } 
}