2016-01-27 14 views
6

Ciao Ho controllato molte domande riguardanti lo swip in SO ma ho dei dubbi.swift: mostra un altro controller vista su scorrimento verso l'alto nella prima vista controller

Nella mia app ho due pagine 1. utente View Controller 2. domanda View Controller

pagina utente ha questo aspetto userpage

ora quello che voglio implementare è quello di mostrare le domande View Controller mentre si fa scorrere verso l'alto lo schermo degli utenti dal basso.

Sono nuovo di Ios, quindi aiutami a raggiungere questo.

edit:

il problema è, mentre scorrendo costituiscono solo dovrebbe iniziare a mostrare l'altro controller della vista. se ho strisciato fino bel mezzo dello schermo con il dito ancora toccando lo schermo, allora dovrebbe mostrare 2 Vista controllers.can ho ottenere questo utilizzando push/pop come questo

enter image description here

+0

Ciao, come da mettere in discussione, provare ad aggiungere un riconoscitore colpo gesto con una direzione sulla vostra guarda e scorri verso il basso prova a spingere/apri nuova schermata. –

+0

@Gagan_iOS Ciao, grazie per la risposta, il problema è che mentre si scorre solo si dovrebbe iniziare a mostrare l'altro controller della vista. se avessi fatto scorrere il dito fino a metà schermo con il dito che toccava ancora lo schermo, allora dovrebbe mostrare 2 controller di vista. Posso ottenerlo usando il push/pop –

+0

Suoni più come se avessi bisogno di un 'UIPanGestureRecognizer'. – Eendje

risposta

0

In primo luogo si dovrà aggiungere a UIPanGestureRecognizer alla "barra delle domande" in modo da poterlo scorrere per mostrare la vista delle domande.

Per gestire più controller vista, è possibile utilizzare un controller di vista del contenitore:

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 
    } 
} 

Qualcosa di simile. Questo è tutto digitato manualmente, quindi potrebbero esserci alcuni errori.

1

È possibile ottenere ciò utilizzando Auto-layout e Gesto di scorrimento. La parte difficile è impostare i vincoli alla tua vista. Aggiungi un negativo di costante costante di altezza alla tua vista in modo che non venga visualizzato nella vista.

@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 

che nella vostra viewDidLoad()

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 
} 

E metodi di strisciare vista

// 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") 
} 
Problemi correlati