티스토리 뷰

iOS

iOS) UIPageViewController 사용해보기

hyun99999 2021. 7. 21. 21:11
728x90
반응형

UIPageViewController

import UIKit

class MainPageVC: UIPageViewController {

    // MARK: - Properties
    private var currentIndex = 0

    lazy var vcArray: [UIViewController] = {
        return [self.vcInstance(name: "ViewController"),
                self.vcInstance(name: "AddVC")]
    }()

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

    // MARK: - @IBOutlet Properties

    //MARK: - View Life Cycle
    override func viewDidLoad() {
        super.viewDidLoad()

//        self.transitionStyle = .scroll

        self.delegate = self
        self.dataSource = self
        if let firstVC = vcArray.first {
            setViewControllers([firstVC], direction: .forward, animated: true, completion: nil)
        }
    }
}

// MARK: - UIPageViewControllerDataSource
extension MainPageVC: UIPageViewControllerDataSource {
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        guard let viewControllerIndex = vcArray.firstIndex(of: viewController) else {
            return nil
        }
        let previousIndex = viewControllerIndex - 1

        guard previousIndex >= 0 else {
            return nil
        }

        return vcArray[previousIndex]
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
        guard let viewControllerIndex = vcArray.firstIndex(of: viewController) else {
            return nil
        }
        let nextIndex = viewControllerIndex + 1

        guard nextIndex < vcArray.count else {
            return nil
        }

        return vcArray[nextIndex]
    }
}

// MARK: - UIPageViewControllerDelegate
extension MainPageVC: UIPageViewControllerDelegate {

}
728x90
반응형
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
링크
Total
Today
Yesterday