2016-09-09 3 views
0

Я знаю, что на этот вопрос был дан ответ раньше, но я не смог найти ответ, используя Swift. В настоящее время у меня есть модуль просмотра страниц, встроенный в представление контейнера. Вид контейнера находится внутри одного и того же viewcontroller как pagecontrol. Я использую делегата, чтобы изменить pagecontrol при подкачке назад и вперед, но в настоящее время страницы не меняются при нажатии на точки pagecontrol. Как я могу сделать это в Swift?Изменить страницу при нажатии на Pagecontrol in Swift

Ответы, которые я нашел здесь, отвечают на вопрос, но не с помощью pageviewcontroller.

+0

Вот несколько ответы с использованием пакета: http://stackoverflow.com/questions/13854222/how-can-i -change-the-page-on-click-the-dots-of-uipagecontrol – Putz1103

+0

Эти ответы включают использование коллекции. Я использую диспетчер просмотра страницы. – user1715916

+0

Цитата из этих ответов: «Нажатие точек« UIPageControl »перемещает ваше текущее представление влево или вправо». – Putz1103

ответ

1

Мое положение было отличным от ответов, приведенных в ссылке. У меня был viewpagecontroller в представлении контейнера и последовали this учебник и second one, где есть объяснение, данное для управления страницей.

Так что я пошел к родительскому ViewController с точки зрения контейнера и создал глобальную переменную:

вар pagerController: MainPageViewController!

Затем использовали:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if (segue.identifier == "PagerContainerSegue") { 
     //This is used to reference the paging left and right functions 
     let childViewController = segue.destination as! MainPageViewController 
     pagerController = childViewController 
    } 
} 

Затем я добавил выход для PageControl, когда значение изменилось:

@IBAction func pageControlValueChange(_ sender: AnyObject) { 
    //setViewControllers comes from the pageviewcontroller 
    if(pageIndex == 0){ 
     pagerController.setViewControllers([orderedViewControllers[1]], 
               direction: .forward, 
               animated: true, 
               completion: nil) 
     pageIndex += 1 

    }else{ 
     pagerController.setViewControllers([orderedViewControllers[0]], 
               direction: .reverse, 
               animated: true, 
               completion: nil) 
     pageIndex -= 1 
    } 
} 

pageIndex назначается здесь:

func mainPageViewController(_ mainPageViewController: MainPageViewController, 
           didUpdatePageIndex index: Int) { 
    pageIndex = index 
    pageControl.currentPage = index 
}