2016-01-27 21 views
6

こんにちは、私はスワイピングに関して多くの質問をしましたが、疑問があります。私はswift:最初のビューコントローラでスワイプして別のビューコントローラを表示

ユーザーのページが、この userpage

のように見える2つのページ 1.ユーザービューコントローラ 2.質問・ビュー・コントローラを持っている私のアプリで

は今、私は実装したいのか疑問がコントローラを表示表示することですユーザーの画面を下からスワイプします。

私はIosを初めて使っているので、これを達成するのを手伝ってください。

編集:

問題はスワイプしながら、唯一それが他のビューコントローラの表示を開始すべきです。私は私の指はまだ画面に触れることで、画面の中央までスワイプすれば、それは私がこの

enter image description here

+0

こんにちは、あなたは質問ごとに、上方向にスワイプジェスチャー認識器を追加しようとするあなたのスワイプを表示したり、新しいスクリーンをポップしたりしようとします。 –

+0

@ Gagan_iOSこんにちは、返信いただきありがとうございます。問題は、それをスワイプするだけで、他のView Controllerの表示が始まるはずです。私の指がまだ画面に触れて画面の中央までスワイプすると、2つのview controllers.canが表示されるはずです。プッシュ/ポップを使用してこれを実現します。 –

+0

'UIPanGestureRecognizer'が必要です。 – Eendje

答えて

0

まずように、この使用してプッシュ/ポップを達成controllers.canあなたが追加する必要があります2ビューを表示する必要がありますUIPanGestureRecognizerをあなたの「質問バー」に貼り付けると、それをパンして質問ビューを表示することができます。このような

var pendingViewController: UIViewController? { 
    didSet { 
     if let pending = pendingViewController { 
      addChildViewController(pending) 
      pending.didMoveToParentViewController(self) 

      pending.view.frame.origin.y = UIScreen.mainScreen().bounds.height 

      view.addSubview(pending.view) 
     } 
    } 
} 

var currentViewController: UIViewController? { didSet { pendingViewController = nil } } 

func showQuestions(recognizer: UIPanGestureRecognizer) { 
    if recognizer.state == .Began { 
     let controller = QuestionViewController() // create instance of your question view controller 
     pendingViewController = controller 
    } 

    if recognizer.state == .Changed { 
     let translation = recognizer.translationInView(view) 

     // Insert code here to move whatever you want to move together with the question view controller view 

     pendingViewController.view.center.y += translation.y 
     recognizer.setTranslation(CGPointZero, inView: view) 
    } 

    if recognizer.state == .Ended { 
     // Animate the view to it's location 
    } 
} 

何か:複数のビューコントローラを処理するために

は、あなたはコンテナビューコントローラを使用することができます。これはすべて手動で入力されるので、間違いがあるかもしれません。

1

これは、自動レイアウトとスワイプジェスチャーを使用して実現できます。トリッキーな部分は、あなたのビューに制約を設定しています。ビューに表示されないように、高さ定数制約の負の値をビューに追加します。あなたのviewDidLoad()よりも

@IBOutlet weak var yourViewBottomConstraint: NSLayoutConstraint! //Create IBOutlet of bottom Contraint to YourView 

let swipeUp = UISwipeGestureRecognizer() // Swipe Up gesture recognizer 
let swipeDown = UISwipeGestureRecognizer() // Swipe Down gesture recognizer OR You can use single Swipe Gesture 

Override func viewDidLoad() { 
// Swipe Gesture 
     swipeUp.direction = UISwipeGestureRecognizerDirection.up 
     swipeUp.addTarget(self, action: "swipedViewUp") 
     drawerButton.addGestureRecognizer(swipeUp) // Or assign to view 

     swipeDown.direction = UISwipeGestureRecognizerDirection.down 
     swipeDown.addTarget(self, action: "swipedViewDown") 
     drawerButton.addGestureRecognizer(swipeDown) // Or assign to view 
} 

および方法は、ビュースワイプする

// Toggle Swipe Action for imagesContainer 
func swipedViewUp(){ 

    self.yourViewBottomConstraint.constant = +90 // Or set whatever value 

    print("Swiped Up") 
} 

func swipedViewDown(){ 

    self.yourViewBottomConstraint.constant = -90 // Or Set whatever value 


    print("Swiped Down") 
} 
関連する問題