Как удалить ChildViewController из контроллера родительского представления в Swift 3

я разрабатываю приложение IOS. Я добавил UIViewController в режиме пейджера. Я хочу повторно инициализировать его, когда язык будет изменен. Здесь я хочу удалить всех детей UIViewController С UIViewPager и снова добавить всех UIViewController в Viewpager. Как я могу это сделать?

Пример Кода

let viewPager = ViewPagerController()
viewPager.options = options
viewPager.dataSource = self
viewPager.delegate = self
self.addChildViewController(viewPager)

Swift 3.1

xcode 8.3.3

3 ответов


после длительного поиска, чтобы удалить контроллеры представления из viewpager. Я сделал это следующим образом.

 if self.childViewControllers.count > 0{
        let viewControllers:[UIViewController] = self.childViewControllers
        for viewContoller in viewControllers{
            viewContoller.willMove(toParentViewController: nil)
            viewContoller.view.removeFromSuperview()
            viewContoller.removeFromParentViewController()
        }
    }

здесь self, текущий UIViewController, который имеет пейджер просмотра. Мне нужно удалить все контроллеры childview из пейджера просмотра. Итак, я получаю список контроллеров представления от текущего UIViewController. Затем я удалил его из родительского представления.


childViewControllers.forEach({ .willMove(toParentViewController: nil); .view.removeFromSuperview(); .removeFromParentViewController() })

вот более краткая версия для удаления всех дочерних контроллеров из родительского. Вы можете использовать самостоятельно.childViewControllers для явного определения. Как этот подход вы можете избавиться от этого дополнительные условия для проверки.


для добавления и удаления дочернего ViewController

//Remove child view controllers
for viewController in self.childViewControllers {
     self.remove(asChildViewController: viewController)

}

//Add child view controllers
self.add(asChildViewController: ViewController)