Ниже приведено описание того, как я показываю разные виды, когда пользователь выполняет поиск, где self.viewControllerAtIndex() - это моя собственная пользовательская функция, которая возвращает представление. Проблема в том, что первые салфетки выходят «--------- салфетки справа до 0» дважды. И затем работает отлично, как ожидалось впоследствии.UIPageViewController initial swipe, вызываемый дважды
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
print("---------swipe Right before " + String(index))
index += 1
print("---------swipe Right " + String(index))
if index == (products!.count) {
index = 0
}
return self.viewControllerAtIndex(index:index)
}
=====CONSOLE OUTPUT=====
---------swipe Right before 0
---------swipe Right 1
---------swipe Right before 0
---------swipe Right 1
func viewControllerAtIndex(index: Int) -> ViewController{
return ViewController.init(id: index)
}
По какой-то причине, каждый другой салфетки после первых работ, как и следовало ожидать. Первоначальное салфетки - это то, что вызывает вывод консоли выше. Это вызывает у меня последовательность просмотра, чтобы выглядеть, как показано ниже (2 просмотров)
First Swipe
View1
Second Swipe
View1
Third Swipe
View2
Fourth Swipe
View1
Fifth Swipe
View2
Я также начала свою uiPageViewController как так
let array = [ViewController](repeating: ViewController.init(videos: (self.videos![self.products![self.index].id]!)), count: 1)
self.UIViewPageController?.setViewControllers(array, direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
Так я создаю новый ViewController на viewDidLoad, а затем, когда user swipes, я создаю новые ViewControllers
См. Мой ответ здесь. http://stackoverflow.com/a/42032487/341994 – matt