Нажмите на странице управления, чтобы перейти к другому виду (нажмите на точки) - PullRequest
2 голосов
/ 28 марта 2019

Я установил PageViewControll с 2 представлениями.Я могу перемещаться между представлениями, и pageControl (точки) соответствуют правильной странице, однако нажатие точек пока не приводит к правильному просмотру.

Я нашел здесь несколько ответов о том, как создать функцию, но не смог реализовать ее успешно, чтобы заставить ее работать.Код для контроллера страницы ниже (без функции касания) Полный код:

func configurePageControl() {
        pageControl = UIPageControl(frame: CGRect(x: 0,y: UIScreen.main.bounds.maxY - 50,width: UIScreen.main.bounds.width,height: 50))
        self.pageControl.numberOfPages = viewControllerList.count
        self.pageControl.currentPage = 0
        self.pageControl.alpha = 0.5
        self.pageControl.tintColor = UIColor.white
        self.pageControl.pageIndicatorTintColor = UIColor.black
        self.pageControl.currentPageIndicatorTintColor = UIColor.white
        self.view.addSubview(pageControl)


    }

        @IBAction func pageControltapped(_ sender: Any) {
        guard let pageControl = sender as? UIPageControl else { return }
        let selectedPage = pageControl.currentPage
        self.setViewControllers([viewControllerList[selectedPage]], direction: .forward, animated: true, completion: nil)
    }


    }

спасибо за любую помощь !!

1 Ответ

0 голосов
/ 28 марта 2019
  1. Вам необходимо создать IBAction для pageControl, из которого вы можете определить, какая точка была нажата.

  2. Затем вам нужно использовать метод setViewControllers(_:direction:animated:completion:) для программной прокрутки страницы.

    func setViewControllers(_ viewControllers: [UIViewController]?, 
          direction: UIPageViewController.NavigationDirection, 
           animated: Bool, 
         completion: ((Bool) -> Void)? = nil)
    

    Вот ссылка на документацию

Используйте следующий код:

@IBAction func pageControltapped(_ sender: Any) {
    guard let pageControl = sender as? UIPageControl else { return }
    let selectedPage = pageControl.currentPage
    self.setViewControllers([viewControllerList[selectedPage]], direction: .forward, animated: true, completion: nil)
}

Добавить цель для pageControl, чтобы связать ее с IBAction:

func configurePageControl() {
    //...your code as it is....
    //add following line
    self.pageControl.addTarget(self, action: #selector(pageControltapped(_:)), for: .touchUpInside)
}
...