Я создал простую раскадровку с контроллером PageView.Почему не работает DataSource моего PageViewController?
Я перевернусь между двумя другими контроллерами View.
My PageView Controller - это пользовательский класс TutorialPageViewController
. Я также создал собственный класс DataSource.
В классе DataSource ожидается, что при попытке прокрутки будут вызваны методы. Однако, это не так. У меня есть точки разрыва в обоих методах, и они никогда не называются.
Первый контроллер просмотра «Страница первый» подходит правильно, но попытка прокрутки не вызывает методы, поэтому я не могу их использовать (следовательно, теперь они возвращают нуль).
Если я установил DataSource своего контроллера вида на self
и разместил там методы, они будут вызваны правильно. Но я хочу переместить методы в отдельный класс для лучшего управления кодом. Так почему же это не работает?
Я попытался
- Настройка моего класса DataSource быть
UIScrollViewDelegate
, а такжеUIPageViewControllerDelegate
и настройка контроллера представленияdelegate
быть DataSource - стиль перехода просмотра страницы является Scroll
class TutorialPageViewController : UIPageViewController {
override func viewDidLoad() {
reset()
}
func reset() {
let dataSource = TutorialPageDataSource(storyBoard: storyboard!)
let content = dataSource.firstContentViewController
self.dataSource = dataSource
self.setViewControllers([content], direction: .forward, animated: true, completion: nil)
}
}
class TutorialPageDataSource : NSObject, UIPageViewControllerDataSource {
private var _storyboard: UIStoryboard
var firstContentViewController: UIViewController
var secondContentViewController: UIViewController
init(storyBoard: UIStoryboard) {
_storyboard = storyBoard
firstContentViewController = _storyboard.instantiateViewController(withIdentifier: "FirstContentViewController")
secondContentViewController = _storyboard.instantiateViewController(withIdentifier: "FirstContentViewController")
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
// break point here never reached
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
// break point here never reached
return nil
}
}
спасибо. Я запомню это в будущем :) –