在icarousel中显示firebase图像

时间:2017-05-01 04:51:04

标签: xcode firebase firebase-realtime-database firebase-storage icarousel

我正在使用icarousel来显示我的firebase数据库中的图像。我有五个UIImages

var ImageOne = UIImage()
var ImageTwo = UIImage()
var ImageThree = UIImage()
var ImageFour = UIImage()
var ImageFive = UIImage()

我使用此代码将firebase存储中的所有五个图像都放入我的UIImages

 if let stringImage5 = self.imagesFive {
                    AppDelegate.instance().showActivityIndicator()
                    let imageRef = self.storage.reference(forURL: "gs://gsignme-14416.appspot.com/images/\(stringImage5)")

                    imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in
                        if error == nil {
                            AppDelegate.instance().dismissActivityIndicator()
                            self.ImageFive = UIImage(data: data!)!


                        }else {
                            print("Error downloading image:" )
                        }



                    })}

现在,我想在icarousel中显示图像,为了做到这一点,我必须将它们放入一个数组中,所以我这样做了:

imageArray = [self.ImageOne, self.ImageTwo, self.ImageThree, self.ImageFour, self.ImageFive] 

现在这个功能应该显示所有五个图像:

func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView {
        var imageView: UIImageView!

        imageView.image = UIImage(imageArray = [self.ImageOne, self.ImageTwo, self.ImageThree, self.ImageFour, self.ImageFive])
        return imageView

    }

但没有显示图像。

1 个答案:

答案 0 :(得分:1)

有很多异步的东西在进行,我认为您可能在下载图像之前创建(并显示)轮播,而不是使用新图像刷新轮播。 / p>

我要看一下Zero to App(videosource),因为它解释了如何使用图像异步填充列表,这基本上就是你所做的做。

另外,不知道iCarousel是如何工作的,但我认为你的viewForItemAt index想要一个图像,而不是一个数组的图像......

let imageArray = [self.ImageOne, self.ImageTwo, self.ImageThree, self.ImageFour, self.ImageFive]
func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView {
        var imageView: UIImageView!
        imageView.image = imageArray[index];
        return imageView
}