Переключите UIViewControllers в UIPageViewController с помощью кнопки - PullRequest
0 голосов
/ 07 мая 2019

У меня есть UIPageViewController, который содержит 3 UIViewController. Я могу установить их как источник данных и переключаться между ними с помощью прокрутки, но я хочу иметь возможность переключаться между ними с помощью кнопок, которые находятся внутри UIViewControllers.

Вот изображение раскадровки:

image

Когда я нажимаю на кнопку «Начать день», запускается следующий код:

func startDay() {
        print("Start Day")
        viewController.setViewControllers([orderedViewControllers[1]], direction: .forward, animated: true, completion: nil)
    }

Вот код контроллера просмотра домашней страницы:

import UIKit

class HomePageViewController: UIPageViewController {

    @IBOutlet var viewController: UIPageViewController!

    lazy var orderedViewControllers: [UIViewController] = {
        return [self.newVc(vc: "StartDayViewController"),
                self.newVc(vc: "StartContactViewController"),
                self.newVc(vc: "StopContactViewController")]
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        //dataSource = self
        //delegate = self

        print("Home Page View Controller Load")

        if let firstViewController = orderedViewControllers.first {
            setViewControllers([firstViewController],
            direction: .forward,
            animated: true,
            completion: nil)
        }
    }

    //MARK: - Functions

    func newVc(vc: String) -> UIViewController {
        return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: vc)
    }

    func startDay() {
        print("Start Day")
        viewController.setViewControllers([orderedViewControllers[1]], direction: .forward, animated: true, completion: nil)
    }
}

Затем контроллер домашней страницы, VC1 и VC2 загружаются и появляются, но отображаемый ViewController остается VC1.

Я бы хотел, чтобы он изменился на VC2, а не перезагружался и снова появлялся контроллер просмотра домашней страницы и VC1. Что я делаю не так?

...