0

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

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

而且我用这个代码从火力存储所有五个图像到我的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 

    } 

但是没有显示图像。

回答

0

有很多异步的东西正在进行,我假设你可能在下载图像之前创建(并显示)传送带,而不是用新图像刷新传送带。

我会看看零到应用程序(video, source),因为它解释了如何异步填充图像列表,这基本上是你在做什么。

而且,不知道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 
} 
+0

我忘了提,在最高层VAR imageArray变量:[UIImage] = []和imageArray = []在我的viewdidLoad中,所以func传送带中的返回imageView没有返回图像 – juelizabeth