2017-06-22 47 views
0

在我的應用程序中,我正在使用自定義圖像數組視圖。用戶上傳的每個帖子的許多圖像應該是以旋轉木馬般的方式顯示的許多圖像。Firebase imageview陣列

在火力點,我從數值形象imageFive

{ 
    "image" : "W585B.jpg", 
    "imageFive" : "", 
    "imageFour" : "", 
    "imageThree" : "", 
    "imageTwo" : "", 
} 

正如你在這個例子中只有一個值中有一個字符串見。用戶可以發佈一到五張圖片。我想追加用戶上傳的許多圖像並將其顯示在傳送帶上。這就是我現在所擁有的。

var imageArray = [UIImage]() 

    override func viewDidLoad() { 
      super.viewDidLoad() 

      if let stringImage = self.imageNames { 



     let imageRef = storage.reference(forURL: "gs://gsignme-14416.appspot.com/images/\(stringImage)") 

     imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
      if error == nil { 


       self.ImageOne = UIImage(data: data!)! 
       imageArray.append(self.ImageOne) 

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


      self.carouselView.reloadData() 

      self.carouselView.type = .rotary 



      if let stringImages = self.imagesTwo { 

       let imageRefs = self.storage.reference(forURL: "gs://gsignme-14416.appspot.com/images/\(stringImages)") 

       imageRefs.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
        if error == nil { 

         self.ImageTwo = UIImage(data: data!)! 
         imageArray.append(self.ImageTwo) 


        }else { 
         print("Error downloading image:") 
        } 
        self.carouselView.reloadData() 

        self.carouselView.type = .rotary 


       })} 
      if let stringImage3 = self.imagesThree { 

       let imageRef = self.storage.reference(forURL: "gs://gsignme-14416.appspot.com/images/\(stringImage3)") 

       imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
        if error == nil { 

         self.ImageThree = UIImage(data: data!)! 
         imageArray.append(self.ImageThree) 


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

        self.carouselView.reloadData() 

        self.carouselView.type = .rotary 

       })} 
      if let stringImage4 = self.imagesFour { 

       let imageRef = self.storage.reference(forURL: "gs://gsignme-14416.appspot.com/images/\(stringImage4)") 

       imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
        if error == nil { 

         self.ImageFour = UIImage(data: data!)! 
         imageArray.append(self.ImageFour) 


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

        self.carouselView.reloadData() 

        self.carouselView.type = .rotary 

       })} 
      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!)! 
         imageArray.append(self.ImageFive) 


        }else { 
         print("Error downloading image:") 
        } 
        self.carouselView.reloadData() 

        self.carouselView.type = .rotary 


       })} 

     }) 

    } 

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

     if view == nil { 
      imageView = UIImageView(frame: CGRect(x: 20, y: 0, width: 250, height: 270)) 
      // imageView.backgroundColor = UIColor.lightGray 
      imageView.contentMode = .scaleAspectFit 
      imageView.clipsToBounds = true 
      carousel.clipsToBounds = true 
     }else{ 
      imageView = view as! UIImageView 

     } 


     imageView.image = imageArray[index] 
     imageArray.removeAll() 

     return imageView 


    } 

現在,我必須單擊兩次單元格才能顯示圖像。當我單擊單元格時,一旦它不顯示任何內容,則會在第二次單擊時顯示圖像。同樣,如果我點擊另一個單元格,它會在第一次單擊時顯示前一個單元格的圖像,然後在第二次單擊時顯示該單元格的圖像。

而且當我點擊多個圖像的單元格,在第一次點擊它說明不了什麼,第二次點擊,應用程序崩潰,並說致命錯誤:超出範圍的索引

回答

0

我不是當然,但你也可以試試這個:

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

    if view != nil { 
     imageView = UIImageView(frame: CGRect(x: 20, y: 0, width: 250, height: 270)) 
     // imageView.backgroundColor = UIColor.lightGray 
     imageView.contentMode = .scaleAspectFit 
     imageView.clipsToBounds = true 
     carousel.clipsToBounds = true 

     imageView = view as! UIImageView 
     imageView.image = imageArray[index] 
     imageArray.removeAll() // are you sure about this line? 
} 
     return imageView 
    } 
+0

我有點想象除了imageArray.removeAll()行之外的所有東西。我把它放在那裏,因爲當我從一個單元格移動到另一個單元格時,圖像會被追加。因此,來自單元格1的圖像會附加到單元格2中的圖像,並將顯示在旋轉木馬中,我不想但現在imageArray.removeAll()不起作用。 – juelizabeth

+0

我更新了我的代碼,以我到目前爲止。所以我現在正在第一次點擊獲取圖像。現在我所說的唯一問題就是細胞圖像的追加 – juelizabeth