2016-05-15 5 views
0

J'ai un ViewController qui est intégré à la fois dans le contrôleur de barre d'onglets et dans le contrôleur de navigation. Il a un rôle d'un jeu/quiz:Swift - confirmez en changeant de vue

enter image description here

Je veux un utilisateur de confirmer à chaque fois que s'il veut quitter le jeu en cours à chaque fois qu'il essaie de changer la vue (onglet modification, cliquez sur « Retour » ou il suffit de quitter l'application).

Donc, je suppose que ma question est: Où dois-je placer mon UIAlertController afin de le faire fonctionner de la manière décrite?

+0

si l'action 'addTarget' sur ce bouton puis réglez votre UIAlertController – Lamar

Répondre

1

Vous pouvez implémenter les délégués pour les codes UITabBarController et UINavigationBar, UITabBarControllerDelegate et UINavigationBarDelegate respectivement.

Pour la UITabBarControllerDelegate mettre en œuvre:

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 
    // alert here, don't go back unless user confirms 
} 

Pour la UINavigationBarDelegate mettre en œuvre:

func navigationBar(navigationBar: UINavigationBar, shouldPopItem item: UINavigationItem) -> Bool { 
    // alert here, don't go back unless user confirms 
} 

Note: Le UINavigationBar est une propriété de votre UINavigationController - vous pouvez devenir le délégué par navigationController.navigationBar.delegate = self;

+0

Salut, merci, c'était en fait très utile. Je ne peux pas obtenir ce travail bien. 'shouldPopItem' renvoie immédiatement et n'attend même pas la réponse' UIAlertController'. Je peux donc afficher le contrôleur après la confirmation de l'utilisateur, mais l'élément de la barre de navigation ne s'affiche pas. Savez-vous peut-être comment résoudre ce problème, @Carter? – jwitos

+0

Je ne suis pas sûr de ce que vous voulez dire par la barre de navigation ne se fait pas éclater. Après confirmation par l'utilisateur, vous pouvez indiquer à votre UINavigationController d'apparaître, ce qui devrait également mettre à jour la barre. – Carter

+0

La barre est correctement mise à jour, mais le View Controller (sous la barre de navigation) n'apparaît pas dans la vue précédente de la pile de navigation, même si j'essaie d'exécuter la méthode 'self.popViewControllerAnimated'. – jwitos