2016-10-03 13 views
6

usiłuję pop do kontrolera widoku głównego za pomocą następującego kodu:Pop do widoku głównego kontrolera z modalnego

self.navigationController!.popToRootViewController(animated: true) 

To zazwyczaj działa, ale pojawia się błąd przy próbie użycia tego kodu, gdy prąd widok jest modalny. W jaki sposób mam zamiar wrócić do kontrolera widoku root w tej sytuacji?

Z góry dziękuję.

+0

Który błąd otrzymujesz? –

Odpowiedz

6

Można sprawdzić, że bieżący kontroler jest prezentowane, jeżeli jest on prezentowany następnie odwołać go i przejść do rootViewController inny mądry przejść bezpośrednio do rootViewController

if self.presentingViewController != nil { 
    self.dismiss(animated: false, completion: { 
     self.navigationController!.popToRootViewController(animated: true) 
    }) 
} 
else { 
    self.navigationController!.popToRootViewController(animated: true) 
} 
0

Jak o użyciu powiadomień?

swój modalne tylko po powiadomieniu

a NavigationController otrzymać wtedy, pop do rootViewController

4

pan przedstawił ViewController, więc trzeba go odrzucić.

Aby odwołać ViewController w szybkich, użyj tego:

self.dismiss(animated: true, completion: nil) 
2

Wynik:

Kod

Załóżmy, że Twój Widok Modalny ma przypisany poniższy ViewController.

Zasadniczo pierwszy ukryć swój pogląd, że jest pokazany jako modalne, należy użyć dismiss(animated: Bool) metody z instancji ViewController.

I widoków przedstawionych jako pchnął, można korzystać z nieruchomości navigationController tych metod na przykład: popToRootViewController(animated: Bool), popViewController(animated:Bool)

class ModalViewController: UIViewController { 

    @IBAction func backButtonTouched(_ sender: AnyObject) { 
    let navigationController = self.presentingViewController as? UINavigationController 

    self.dismiss(animated: true) { 
     let _ = navigationController?.popToRootViewController(animated: true) 
    } 
    } 

} 
Powiązane problemy