转场后屏幕变黑 [英] Screen goes black after segue

查看:36
本文介绍了转场后屏幕变黑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图调试这个,但无济于事.

I have tried to debug this but to no avail.

基本上,当我从第一个视图控制器切换到第二个视图控制器时,屏幕会暂时变黑.代码按照我想要的方式执行,但屏幕变黑对我来说有点痛苦.

Basically when I segue from the first view controller to the second view controller the screen goes black momentarily. The code performs as I want it to but the screen going black is a bit of a pain for me.

代码如下:

第一页的转场:

func mapView(_ mapView: MGLMapView, tapOnCalloutFor annotation: MGLAnnotation) {
        self.performSegue(withIdentifier: "goToSecond", sender: self)
    }

第二个视图控制器:

override func viewDidLoad() {
    super.viewDidLoad()
    self.loadDataFromFirebase()
}

第一个函数:

  func loadDataFromFirebase() {
           let db = Firestore.firestore()
           db.collection(restaurauntName).getDocuments { (snapshot, err) in
              if let err = err {
                 print("Error getting documents: \(err)")
                 return
              } else {
                 for document in snapshot!.documents {
                    let name = document.get("Name") as! String
                    let description = document.get("Description") as! String
                    self.names.append(name)
                    self.descriptions.append(description)
                 }
                 self.setupImages() //safe to do this here as the firebase data is valid
                 self.collectionView?.reloadData()
              }
           }
        }

此功能设置页面布局

func setupImages(){
        self.pages = [
            Page(imageName: self.imagesOne, headerText: names[0], bodyText: descriptions[0]),

            Page(imageName: self.imagesTwo, headerText: names[1], bodyText: descriptions[1]),

            Page(imageName: self.imagesThree, headerText: names[2], bodyText: descriptions[2]),

            Page(imageName: self.imagesFour, headerText: names[3], bodyText: descriptions[3]),

            Page(imageName: self.imagesFive, headerText: names[4], bodyText: descriptions[4]),
        ]

        self.collectionView?.backgroundColor = .white
        self.collectionView?.register(PageCell.self, forCellWithReuseIdentifier: "cellId")

        self.collectionView?.isPagingEnabled = true
    }

设置页面控件

lazy var pageControl: UIPageControl = {
    let pc = UIPageControl()
    pc.currentPage = 0
    pc.numberOfPages = 5
    pc.currentPageIndicatorTintColor = .red
    pc.pageIndicatorTintColor = .gray
    return pc
}()

滑动控制器扩展:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        return 0
    }

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return pages.count

    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! PageCell

        let page = pages[indexPath.item]
        cell.page = page
        return cell
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: view.frame.width, height: view.frame.height)
    }

如果我必须添加任何其他内容,请告诉我!欢迎任何帮助

Please let me know if I have to add anything else! any help is welcome

这是该问题的 YouTube 剪辑:

here is a youtube clip of the problem:

https://www.youtube.com/watch?v=vQGiw3Jd9pM

我发现当我注释掉 firebase 方法时,问题就消失了.

I have since found that when I comment out the firebase method the problem goes away.

推荐答案

我已经解决了问题!问题在于函数被调用的顺序.

I have solved the problem! the problem was the order in which the functions were being called.

我没有意识到页面对于 firebase 的设置速度太快,所以我现在更早地调用该函数!在视图中会出现

I realised not that the page was being set up too fast for firebase so I now call the function earlier! in the view will appear

override func viewWillAppear(_ animated: Bool) {
        print("Done")
        super.viewWillAppear(animated)

        self.loadDataFromFirebase()
}

感谢所有帮助过的人!

这篇关于转场后屏幕变黑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆