rejeter vue actuelle du contrôleur APRÈS la présentation de la nouvelle vue-contrôleur - swift
Je suis en train de rejeter un VC et de présenter une nouvelle VC. mais je ne veux pas de vieux VC existe plus. J'utilise le code ci-dessous pour rejeter actuel de CR et de présenter de nouvelles. mais de cette façon, il y a un intervalle de temps entre les rejeter et de les présenter. Je ne veux pas l'utilisateur à faire ce constat. donc, je tiens à présenter de nouveaux CR de la première puis de rejeter précédente. Est-il possible de faire cela?
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let destinationController = self.storyboard?.instantiateViewController(withIdentifier: "login") as! Login
let presentingVC = self.presentingViewController
self.dismiss(animated: false, completion: { () -> Void in
presentingVC!.present(destinationController, animated: true, completion: nil)
})
Pourquoi ne pas simplement appeler de façon séquentielle, les présentons dans un premier temps, puis rejeter (et pas dans le gestionnaire d'achèvement du présent)? Donc:
Ami, pourquoi ne vous êtes rejeté que currentVc de la pile?
directement, vous pouvez ignorer quand vous le souhaitez en animation de fabrication de faux.
si je le fais de cette façon, elle présente d'abord et le licenciement des nouveaux VC, pas l'ancien
parce que je n'ai pas envie de le montrer à nouveau lorsque les utilisateurs remonte de nouveau. et comment faire l'animation de faux m'aide?
presentingVC!.present(destinationController, animated: true, completion: nil); self.dismiss(animated: false, completion:nil)
Ami, pourquoi ne vous êtes rejeté que currentVc de la pile?
directement, vous pouvez ignorer quand vous le souhaitez en animation de fabrication de faux.
si je le fais de cette façon, elle présente d'abord et le licenciement des nouveaux VC, pas l'ancien
parce que je n'ai pas envie de le montrer à nouveau lorsque les utilisateurs remonte de nouveau. et comment faire l'animation de faux m'aide?
OriginalL'auteur Hos Ap | 2017-02-20
Vous devez vous connecter pour publier un commentaire.
Je pense que le meilleur moyen est de rejeter le courant VC lorsque vous fait revenir en arrière. Cela signifie que, de présenter votre
destinationController
en utilisant le courant VC et puis quand vous revenez, faire disparaître les deux VCOriginalL'auteur JohnnyAW
Avertissement
Donc, sauf si vous devez absolument modal présenter vos nouveaux VC, alors je recommande tout simplement l'exécution d'une séquence entre les deux VCs. Il semble que vous êtes en les présentant sous forme modale parce que vous voulez manuellement rejeter plus tard à partir de l'original de la VC. Non seulement est à l'aide d'un segue cela plus facile, à mon avis, mais il vous permettra également d'utiliser la méthode que j'ai décrite ci-dessous.
Solution
Ce n'est probablement pas le plus élégant de la méthode, mais vous pouvez passer l'instance de l'ancien CR par
prepareForSegue
à la prochaine VC, puis de les rejeter dans le nouveau VCviewDidLoad
.Par exemple, dans votre nouveau VC vous pourriez avoir quelque chose comme ceci:
Ainsi, lorsque votre newVC charge, il rejette la précédente VC. Tout ce que vous devez faire dans votre prevVC classe est pass sur l'instance en
prepareForSegue
comme si.Puis, bien sûr, vous avez à présent la newVC quand vous voulez, et puis tout le reste serait pris en charge.
Ah je vois le dilemme ici. Ne pas voir que. Heureusement, il semble qu'il n'est que de la présentation de modal, de sorte qu'il pourrait écarter manuellement plus tard. Donc, si il a juste effectué une transition, il ne devrait pas être un problème. Je vais modifier mon post pour inclure cette information.
OriginalL'auteur Benjamin Lowry