2017-08-04 3 views
-1

Dans la quatrième ligne, essayez de Xcode pour me forcer à ajouter un ? après NavigationController, même si j'ai une valeur par défaut destinationViewController avec le ?? Et si j'ajoute le ? il me veut changer la syntaxe if let avec in au lieu d'un as ...Pourquoi xcode veut-il que je fasse de navigationController une option quand j'ai un défaut ?? juste valeur après

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    var destinationViewController = segue.destination 
    if let navigationViewController = destinationViewController as? UINavigationController { 
     destinationViewController = navigationController.visibleViewController ?? destinationViewController 
    } 
+0

Sur une note côté: 'destinationViewController = navigationController.visibleViewController ?? La déclaration de destinationViewController n'a aucune signification. – nayem

+0

Cela a effectivement une signification. Il s'agit d'un raccourci pour dérouler optionnellement 'navigationController.visibleViewController' et n'attribuer sa valeur à' destinationViewController' que si le déballage a réussi. –

Répondre

0

Essayez ce code:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    var destinationViewController = segue.destination 
    if let navigationViewController = destinationViewController as? UINavigationController { 
     destinationViewController = navigationViewController.visibleViewController ?? destinationViewController 
    } 

Vous utilisez NavigationController au lieu de navigation Voir Contrôleur