У меня есть UIPageViewController, встроенный в мое представление контейнера. Я хотел бы добавить цель к своему UIButton, когда это будет либо первая, либо вторая страница моего UIPageViewController. Мне удалось изменить заголовок UIButton и добавить цель к кнопке, чтобы закрыть вид и вернуться к домашнему контроллеру. Однако у меня возникают проблемы при добавлении цели в UIButton для первых двух страниц, чтобы перейти к следующему представлению. Всего в UIPageViewController есть 3 UIViewController.
class InfoPageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
var pages = [UIViewController]()
let pageControl = UIPageControl()
var nextButton: UIButton = {
var button = UIButton()
button.layer.cornerRadius = 7
button.backgroundColor = UIColor.rgb(red: 107, green: 206, blue: 238)
button.setTitle("Next", for: .normal)
return button
}()
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
if let viewControllerIndex = self.pages.index(of: viewController) {
if viewControllerIndex == 0 {
// wrap to last page in array
return self.pages.last
} else {
// go to previous page in array
return self.pages[viewControllerIndex - 1]
}
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
if let viewControllerIndex = self.pages.index(of: viewController) {
if viewControllerIndex < self.pages.count - 1 {
// go to next page in array
return self.pages[viewControllerIndex + 1]
} else {
// wrap to first page in array
return self.pages.first
}
}
return nil
}
@objc func dismissView(){
let homeVC = HomeScreen()
present(homeVC, animated: false, completion: nil)
}
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if let viewControllers = pageViewController.viewControllers {
if let viewControllerIndex = self.pages.index(of: viewControllers[0]) {
if viewControllerIndex == 2{
self.nextButton.setTitle("Home", for: .normal)
self.nextButton.addTarget(self, action: #selector(dismissView), for: .touchUpInside)
print("view three")
self.pageControl.currentPage = viewControllerIndex
}else{
self.nextButton.setTitle("Next", for: .normal)
self.pageControl.currentPage = viewControllerIndex
}
}
}
}
}