-
Notifications
You must be signed in to change notification settings - Fork 0
Page ViewController in container
Mohammad Azmal Hossain edited this page Sep 19, 2017
·
1 revision
class MyPageViewController: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
let container = UIView()
var pageController: UIPageViewController!
let vc = PurpleViewController()
let vc2 = GreenViewController()
let vc3 = OrangeViewController()
var controllers = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
container.frame = CGRect(x: 10, y: 120, width: self.view.frame.size.width , height: self.view.frame.size.height)
self.view.addSubview(container)
container.backgroundColor = .yellow
pageController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
pageController.dataSource = self
pageController.delegate = self
self.addChildViewController(pageController)
self.container.addSubview(pageController.view)
pageController.didMove(toParentViewController: self)
let views = ["pageController": pageController.view] as [String: AnyObject]
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[pageController]|", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[pageController]|", options: [], metrics: nil, views: views))
controllers.append(vc)
controllers.append(vc2)
controllers.append(vc3)
pageController.setViewControllers([vc], direction: .forward, animated: false)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
if let index = controllers.index(of: viewController) {
if index > 0 {
return controllers[index - 1]
} else {
return nil
}
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
if let index = controllers.index(of: viewController) {
if index < controllers.count - 1 {
return controllers[index + 1]
} else {
return nil
}
}
return nil
}
}
class GreenViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .green
}
}
class OrangeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .orange
}
}
class PurpleViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .purple
}
}