2016-11-16 56 views
0

我想添加一個滑動動作到我的應用程序。基本上我有5個視圖控制器和我的主視圖控制器。在我的主視圖控制器上,我有一個視圖,並將其他5個視圖控制器的內容調用到該視圖。我想要滑動這5個視圖控制器。如何在視圖控制器之間滑動?

我的代碼:

import UIKit 

class TabViewController: UIViewController { 


    @IBOutlet var contentView: UIView! 
    @IBOutlet var buttons: [UIButton]! 
    @IBOutlet var backgroundView: UIImageView! 


    var movingView = UIView() 

    var rifleViewController: UIViewController! 
    var pistolViewController: UIViewController! 
    var shotgunViewController: UIViewController! 
    var smgsViewController: UIViewController! 
    var sniperViewController: UIViewController! 

    var viewControllers: [UIViewController]! 
    var selectedIndex: Int = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let storyboard = UIStoryboard(name: "Main", bundle: nil) 

     rifleViewController = storyboard.instantiateViewController(withIdentifier: "rifles") 
     sniperViewController = storyboard.instantiateViewController(withIdentifier: "snipers") 
     smgsViewController = storyboard.instantiateViewController(withIdentifier: "smgss") 
     shotgunViewController = storyboard.instantiateViewController(withIdentifier: "shotguns") 
     pistolViewController = storyboard.instantiateViewController(withIdentifier: "pistols") 
     viewControllers = [rifleViewController, 
          pistolViewController, 
          shotgunViewController, 
          smgsViewController, 
          sniperViewController] 

     buttons[selectedIndex].isSelected = true 
     didPressTab(buttons[selectedIndex]) 

     let screenWidth = UIScreen.main.bounds.width 
     movingView = UIView(frame: CGRect(x: 0, y: 80, width: screenWidth/5, height: 5)) 
     movingView.backgroundColor = UIColor.white 
     backgroundView.addSubview(movingView) 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func didPressTab(_ sender: UIButton) { 

     let previousIndex = selectedIndex 

     selectedIndex = sender.tag 

     buttons[previousIndex].isSelected = false 
     let previousVC = viewControllers[previousIndex] 

     previousVC.willMove(toParentViewController: nil) 
     previousVC.view.removeFromSuperview() 
     previousVC.removeFromParentViewController() 

     sender.isSelected = true 

     let vc = viewControllers[selectedIndex] 

     addChildViewController(vc) 

     vc.view.frame = contentView.bounds 
     contentView.addSubview(vc.view) 
     vc.didMove(toParentViewController: self) 

     let newx = sender.frame.origin.x 

     UIView.animate(withDuration: 0.2) { 
      self.movingView.frame.origin.x = newx 
     } 


     } 

} 

回答

0

我不知道如果我理解你的問題,但您可以添加(從界面生成器)一UIGestureRecognizer(用於刷卡動作)來查看和的選擇那個手勢,你展示你想要展示的視圖。

2

你必須去UIPageViewController

使用setViewControllers(_:direction:animated:completion:)您可以設置視圖控制器的數組,也可以自定義動畫。

+0

謝謝您的回答。我是初學者,你能告訴我,我應該如何在我的代碼中執行此操作。 –

+0

@VolkanElçi這裏有一些通過它的鏈接https://spin.atomicobject.com/2015/12/23/swift-uipageviewcontroller-tutorial/ http://www.theappguruz.com/blog/easy-steps-to - 實施 - uipageviewcontroller功能於迅速 – Rajat

0

加上你所有的viewController兩個Swipe Gesture Recognizer。請注意,確實將它們拖放到層次結構中的View Controller上,否則它可能不起作用(對於最左側和最右側的視圖控制器,您只需添加一個swipe gesture recognizer)。之後,對於Swipe Gesture Recognizer每個視圖控制器中的一個Swipe選項在屬性檢查器中從標準Left更改爲Right
創建從每個視圖控制器到下一個Show海牙和一個回。給他們一個你能記得的Identifier。然後寫類似的東西到每個ViewController.swift並與每個對應的視圖控制器的兩個Swipe Gesture Recognizer鏈接@IBAction

@IBAction func didSwipe(_ sender: UISwipeGestureRecognizer) { 
     if sender.direction == UISwipeGestureRecognizerDirection.left { 
      performSegue(withIdentifier: "identifierOfSegue", sender: nil) 
     } 

     if sender.direction == UISwipeGestureRecognizerDirection.right { 
      performSegue(withIdentifier: "identifierOfOtheSegue", sender: nil) 
     } 
} 
相關問題