2016-08-11 2 views
2

Ich versuche zu verhindern, dass meine tableview Bilder von Firebase auf jedem rauf und runter scrollen. Wie soll ich das machen? Ich verstehe nicht einmal, warum es so ist, da ich die 3rd-Party-Bibliothek namens "MSWebImage" verwende, die irgendwo sie cache sollte.Verhindern, dass Bilder auf jede Rolle herunterladen

Ich probierte auch die 3rd-Party-Bibliothek namens "KingFisher", die das gleiche taten.

Edit: Ich bemerkte, dass beim Scrollen nach oben und unten ist das Caching etwas auf jedem blättert in dem Speicher, aber die Platte ist Null

Dies ist der Code, den ich verwenden ist, um die Bilder zu bekommen:

let productImageref = productsValue[indexPath.row]["Products"] as? String 

FIRStorage.storage().reference().child("\(productImageref!).png").downloadURLWithCompletion({(url, error)in 
      if error != nil{ 
       print(error) 
      }else{ 
     cell.snusProductImageView.sd_setImageWithURL(url) 
    } 
}) 
+0

Ich habe das gleiche Problem Mann. Selbst wenn ich Parse benutze, habe ich eine Sammlungsansicht und ich bringe einige Bilder mit ... Dann speichere ich sie mit "Kingfisher", aber wenn ich auf der Zelle 30 bin, möchte ich zurück zur ersten Zelle Es wird wieder geladen (zeigt den Indikator usw.) und ich suche nach einem Weg, es nicht wieder zu laden, sondern es sofort zu zeigen. –

+0

@KwnstantinosNatsios Wenn Sie etwas finden, lassen Sie es mich bitte wissen. Ich habe versucht, viel zu cachen, aber ich denke, es ist nicht gut, da die Bibliothek es tun sollte. –

+0

Ich habe eine Lösung gefunden, die ohne Bibliothek perfekt für mich funktioniert hat. folgen Sie dieser Anleitung hier http://jamesonquave.com/blog/developing-ios-apps-using-swift-part-5-async-image-loading-and-caching/ –

Antwort

0

Vielleicht könnten Sie die Berührungsmethoden wie touchesBegan oder touchesMoved verwenden und dann jedesmal, wenn die touchesMoved-Methode aufgerufen wird, self tableView.reloadData() aufrufen.

+0

Ich denke du hast die Frage nicht gelesen? :) Dein Vorschlag würde jedes Bild neu laden, aber ich möchte es verhindern. –

0

Vielleicht sollten Sie die Daten in der ViewDidLoad herunterladen, so dass nur einmal entladen.

in einem Wörterbuch https Adressen gespeichert.

func convertGsToHttps (keySection: String, pathGsToConvert: String) { 

    FIRStorage.storage().referenceForURL(pathGsToConvert).downloadURLWithCompletion({(url, error)in 
     if error != nil{ 
      print(error) 
     }else{ 
      self.urlHttpsSection.updateValue(url! , forKey: keySection) 

     } 
    }) 
} 

Und dann in cellForRowAtIndexPath

let setImage = section.value as! String //Getting the key to my dictionary 
    //loadData() 




    for clave in urlGsSecciones.keys where clave == setImage 
    { 
     if setImage == clave 
     { 
      cell.imageCellBackground.contentMode = UIViewContentMode.ScaleAspectFill 
      cell.imageCellBackground.clipsToBounds = true 
      let urlHttps = urlHttpsSection[setImage] 
      print("urlHttps", urlHttps) 
      cell.imageCellBackground.sd_setImageWithURL(urlHttps) 
     } 
    } 

**

Verwandte Themen