UIPageViewController получился как черный экран - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть экран приветствия. Я хочу, чтобы люди впервые увидели, как они запускают мое приложение, используя UIPageViewController.Я думаю, что я все реализовал правильно, но когда я тестирую его, экран гаснет и ничего не делает.может кто-нибудь помочь мне здесь?Большое спасибо!

import UIKit

class pageViewController: UIPageViewController,     UIPageViewControllerDataSource, UIPageViewControllerDelegate {


override func viewDidLoad() {
    super.viewDidLoad()

    let window = UIWindow()
    let pageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    window.rootViewController = pageViewController
    window.makeKeyAndVisible()

    dataSource = self.dataSource
    delegate = self.delegate

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

lazy var orderedViewControllers: [UIViewController] = {
    return [self.newViewController(name: "IntroViewController"),
            self.newViewController(name: "GatherInfoViewController"),
            self.newViewController(name: "DashboardShowViewController"),
            self.newViewController(name: "HomeShowViewController"),
            self.newViewController(name: "FriendShowViewController"),
            self.newViewController(name: "GettingStartedViewController")]
}()



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


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

    guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else { return nil }

    let previousIndex = viewControllerIndex - 1

    guard previousIndex >= 0          else { return orderedViewControllers.last }

    guard orderedViewControllers.count > previousIndex else { return nil        }

    return orderedViewControllers[previousIndex]
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
    guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else { return nil }

    let nextIndex = viewControllerIndex + 1

    guard nextIndex < orderedViewControllers.count else { return orderedViewControllers.first }

    guard orderedViewControllers.count > nextIndex else { return nil         }

    return orderedViewControllers[nextIndex]
    }
}

1 Ответ

0 голосов
/ 22 декабря 2018

Прокомментируйте эти строки

let window = UIWindow()
let pageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
window.rootViewController = pageViewController
window.makeKeyAndVisible()
dataSource = self.dataSource
delegate = self.delegate

И замените на

self.dataSource = self
self.delegate = self

Также внутри AppDelegate s didFinishLaunchingWithOptions, выполните

window = UIWindow(frame: UIScreen.main.bounds)
window!.rootViewController = PageViewController()
window!.makeKeyAndVisible()

class PageViewController: UIPageViewController,  UIPageViewControllerDataSource, UIPageViewControllerDelegate

Полный программный пример здесь

...