Je développe une application IOS. J'ai ajouté la UIViewController
dans View Pager. Je veux le réinitialiser lorsque la langue est changée. Ici, je veux supprimer tous les enfants UIViewController
de UIViewPager
et à nouveau pour ajouter tous UIViewController
dans Viewpager. Comment puis je faire ça?
Exemple de code
let viewPager = ViewPagerController()
viewPager.options = options
viewPager.dataSource = self
viewPager.delegate = self
self.addChildViewController(viewPager)
Swift 3.1
xcode 8.3.3
Après la longue recherche pour supprimer les contrôleurs de vue de viewpager. Je l'ai fait de la manière suivante.
if self.childViewControllers.count > 0{
let viewControllers:[UIViewController] = self.childViewControllers
for viewContoller in viewControllers{
viewContoller.willMove(toParentViewController: nil)
viewContoller.view.removeFromSuperview()
viewContoller.removeFromParentViewController()
}
}
uIViewController actuel qui a View Pager. Je dois supprimer tous les contrôleurs de vue enfant du pager de vue. Donc, je reçois la liste des contrôleurs de vue de UIViewController actuel Ensuite, je l'ai supprimé de la vue Parent.
Swift 4.2, XCode 10, ios 12, 2018 Réponse
self.children.forEach{$0.willMove(toParent: nil);$0.view.removeFromSuperview();$0.removeFromParent()}
J'espère que c'est utile à quelqu'un
Mise à jour pour Swift 4
if self.children.count > 0{
let viewControllers:[UIViewController] = self.children
for viewContoller in viewControllers{
viewContoller.willMove(toParent: nil)
viewContoller.view.removeFromSuperview()
viewContoller.removeFromParent()
}
}
Pour ajouter viewController:
let forgetPasswordVc = ForgetPasswordViewController()
self.addChild(forgetPasswordVc)
self.view.addSubview(forgetPasswordVc.view)
forgetPasswordVc.didMove(toParent: self)
Pour supprimer (à l'intérieur du ForgetPasswordViewController):
self.removeFromParent()
self.view.removeFromSuperview()
Swift 4.2
créer extension
sur UIViewController
et ajouter la méthode removeChild()
extension UIViewController {
func removeChild() {
self.children.forEach {
$0.didMove(toParent: nil)
$0.view.removeFromSuperview()
$0.removeFromParent()
}
}
}