Я хотел бы реализовать что-то вроде PageMenu. В настоящее время у меня есть контроллер корневого представления с двумя контейнерами внутри, с именем headerViewController и containerViewController. Я все настроил, но я понятия не имею, как синхронизировать поведение между этими двумя контроллерами представлений.Как синхронизировать индекс между контроллерами вида
- Как я могу отправить свой индекс из UICollectionViewController в UIPageViewController?
- Как изменить индекс в UICollectionViewController при выполнении прокрутки UIPageViewController?
RootViewController
var headerViewController: PageMenuViewController?
var containerViewController: PageViewController?
override func awakeFromNib() {
pages = [Pages(name: "Page1", selected: true, url: photo1), Pages(name: "Page2", url: video1)]
}
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: Navigation
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "rootViewSegue" {
containerViewController = segue.destination as? PageViewController
containerViewController!.controllerArray = pages
} else if segue.identifier == "headerViewSegue" {
headerViewController = segue.destination as? PageMenuViewController
headerViewController!.dataArray = pages
}
}
containerViewController (UIPageViewController)
func jumpToPage(_ index: Int) {
if index < orderedViewControllers.count {
setViewControllers([orderedViewControllers[index]], direction: .forward, animated: true, completion: nil)
}
}
headerViewController (UICollectionViewController)
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// Sync index with containerViewController
// How to use jumpToPage ??
}
Да пример будет хорошо для других, которые могут захотеть решения для этого –