Search code examples
iosswiftxcodeswift3uipageviewcontroller

UIPageViewController showing black screen


My UIPageViewController appears as a black screen when run.

It's the root view controller set in app delegage:

    window = UIWindow()
    let mainPageViewController = MainPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    window?.rootViewController = mainPageViewController

This is my code for MainPageViewController:

class MainPageViewController: UIPageViewController, UIPageViewControllerDataSource 
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        dataSource = self

        let profileController = ProfileController()
        let viewControllers = [profileController]
        self.setViewControllers(viewControllers, direction: .forward, animated: true, completion: nil)
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
    {
        return nil
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?
    {
        return nil
    }
}

The profilecontroller which i'm trying to set as the initial page is a normal UIViewController.

I've have tried a lot of stuff, but it always just shows a black screen. Any idea on what I'm doing wrong?


Solution

  • Your PageViewController is perfectly fine. Your process of setting the rootViewController however misses following:

    window = UIWindow()
    let mainPageViewController = MainPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    window?.rootViewController = mainPageViewController
    // This line will make it visible
    window?.makeKeyAndVisible()