2016-01-27 16 views
6

Witam Sprawdziłem wiele pytań dotyczących przesuwania w SO, ale mam wątpliwości.swift: pokaż kolejny kontroler widoku po przesunięciu w górę w pierwszym kontroler widoku

W moim app mam dwie strony 1. użytkownik widok kontroler 2. Pytanie widok kontroler

strona użytkownika wygląda to userpage

co teraz chcę zaimplementować jest pokazanie pytania zobaczyć kontroler jednocześnie przesuwając ekran użytkownika od dołu.

Jestem nowy w IOS, więc pomóż mi w osiągnięciu tego.

edit:

problemem jest natomiast przesuwając się tylko powinno rozpocząć pokazujący inny kontroler widoku. gdybym przeciągnął aż środku ekranu palcem nadal dotknięcie ekranu, to powinno pokazać 2 Widok controllers.can to osiągnąć za pomocą wypychania/pop jak ten

enter image description here

+0

Cześć, jak na ty pytanie, spróbuj dodać rozpoznającym gest machnięcia w kierunku na własną wyświetl & po przesunięciu spróbuj przesuń/popnij nowy ekran. –

+0

@Gagan_iOS Cześć, dziękuję za odpowiedź, problem jest podczas przesuwania tylko, że powinien zacząć pokazywać drugi kontroler widoku. jeśli przesuwałbym do połowy ekranu, wciąż dotykając ekranu palcem, powinien pokazywać 2 kontrolery widoku. Mogę to osiągnąć za pomocą funkcji push/pop –

+0

Brzmi bardziej jak potrzeba 'UIPanGestureRecognizer'. – Eendje

Odpowiedz

0

Najpierw musisz dodać a UIPanGestureRecognizer do "paska pytań", aby można było go przesuwać, aby wyświetlić widok pytań.

Aby obsłużyć wiele kontrolerów widoku, można użyć kontrolera widoku Pojemnik:

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

coś takiego. Wszystko to jest wpisane ręcznie, więc mogą wystąpić błędy.

1

Można to osiągnąć za pomocą automatycznego układu i gestu przesunięcia. Trudna część to ustawienie ograniczeń dla widoku. Dodaj ograniczenie ujemnej wysokości do widoku, aby nie było ono widoczne.

@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 

niż w swoim 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 
} 

i metody przesuń widok

// 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") 
} 
Powiązane problemy