У меня странное поведение с UIPageViewController
.Шаги:
- Контроллер открытого представления
- Нажмите на кнопку камеры
- Выберите изображение
- При возврате обратно включенный контроллер представления в дубль ContainerViewвсе место в View Controller
Вот мой код:
![enter image description here](https://i.stack.imgur.com/AIBds.png)
![enter image description here](https://i.stack.imgur.com/u5nX4.png)
class ContainerPagerViewController: BaseUIViewController {
// The UIPageViewController
var pageContainer: UIPageViewController!
override func viewDidLoad() {
super.viewDidLoad()
// Create the page container
pageContainer = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
// Add it to the view
view.addSubview(pageContainer.view)
}
}
class RPViewController: BaseUIViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {
var containerViewController: ContainerPagerViewController?
// Track the current index
var currentIndex: Int?
private var pendingIndex: Int?
private(set) lazy var pages: [UIViewController] = {
return [self.addViewController(identifier: "ViewController1"),
self.addViewController(identifier: "ViewController2"),
self.addViewController(identifier: "ViewController3"),
self.addViewController(identifier: "ViewController4"),
self.addViewController(identifier: "ViewController5"),
self.addViewController(identifier: "ViewController6")]
}()
override func viewDidLoad() {
super.viewDidLoad()
currentIndex = 0
containerViewController?.pageContainer.delegate = self
containerViewController?.pageContainer.dataSource = self
}
private func addViewController(identifier: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil) .
instantiateViewController(withIdentifier: identifier) as! UIViewController
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSegue" {
containerViewController = segue.destination as? ContainerPagerViewController
}
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
pendingIndex = pages.index(of: pendingViewControllers.first! as! UIViewController)
}
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if completed {
currentIndex = pendingIndex
}
}
}
}