I am developing an IOS Application. I have added the UIViewController
in View Pager. I want to reinitialize it when the language is changed. Here I want to remove all child UIViewController
from UIViewPager
and again back to add all UIViewController
into Viewpager. How can I do that?
Sample Code
let viewPager = ViewPagerController()
viewPager.options = options
viewPager.dataSource = self
viewPager.delegate = self
self.addChildViewController(viewPager)
Swift 3.1
xcode 8.3.3
After the long search to remove the view controllers from viewpager. I did it in the following way.
if self.childViewControllers.count > 0{
let viewControllers:[UIViewController] = self.childViewControllers
for viewContoller in viewControllers{
viewContoller.willMove(toParentViewController: nil)
viewContoller.view.removeFromSuperview()
viewContoller.removeFromParentViewController()
}
}
here self is , Current UIViewController which has View Pager. I need to remove all the childview controllers from the view pager. So, i get the list of view controllers from Current UIViewController. Then i removed it from the Parent view.
For swift 4.2
if self.children.count > 0{
let viewControllers:[UIViewController] = self.children
for viewContoller in viewControllers{
viewContoller.willMove(toParent: nil)
viewContoller.view.removeFromSuperview()
viewContoller.removeFromParent()
}
}
EDIT
Remove top childview controller:
func removeTopChildViewController(){
if self.children.count > 0{
let viewControllers:[UIViewController] = self.children
viewControllers.last?.willMove(toParent: nil)
viewControllers.last?.removeFromParent()
viewControllers.last?.view.removeFromSuperview()
}
}