UIPageViewController 显示黑屏

Posted

技术标签:

【中文标题】UIPageViewController 显示黑屏【英文标题】:UIPageViewController showing black screen 【发布时间】:2017-09-07 06:55:48 【问题描述】:

我的 UIPageViewController 在运行时显示为黑屏。

它是应用委托中设置的根视图控制器:

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

这是我的 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
    

我试图设置为初始页面的配置文件控制器是一个普通的 UIViewController。

我已经尝试了很多东西,但它总是只显示黑屏。知道我做错了什么吗?

【问题讨论】:

您是否尝试过在 viewDidLoad() 函数中通过 view.backgroundColor = .white 将 backgroundColor 设置为白色? 是的,它应该显示的视图控制器的背景颜色也是白色的。 你在使用故事板吗? 我试过你的代码,它对我有用。在将其设置为 rootViewController 后尝试添加window?.makeKeyAndVisible()...也许会有所帮助 虽然这不应该导致它.. 但是,PageViewController 看起来不错。尝试创建一个普通的新 UIViewController,将其背景设置为白色并将其设置为代替 profileController - 也许问题就在那里.. 【参考方案1】:

您的 PageViewController 非常好。但是,您设置 rootViewController 的过程缺少以下内容:

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

【讨论】:

【参考方案2】:

试试这个:-

self.window = UIWindow(frame:  UIScreen.main.bounds)
    let mainPageViewController = MainPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    window?.rootViewController = mainPageViewController
    self.window?.makeKeyAndVisible()

【讨论】:

【参考方案3】:

我不确定你的问题是什么,如果你的问题是you don't know why your screen is black?,我认为你应该在appDelegate中设置这个:

window.backgroundColor = .white

这个给你的控制器:

self.view.backgroundColor = .white

【讨论】:

UIPageViewController 应该显示 profilecontroller,它有很多子视图等。

以上是关于UIPageViewController 显示黑屏的主要内容,如果未能解决你的问题,请参考以下文章

PageViewController 显示黑屏

UIPageControl(页面控件)不显示在 UIPageViewController

UIPageViewController - 每个页面显示不同的 Webview

UIPageViewController 显示错误数据

UIPageViewController 不显示其视图控制器视图

UIPageViewController 乱序显示页面,从不调用 viewControllerBeforeViewController