Das ist der Code
Alles anzeigen
Erst starte ich das Laden des Images:
eventDetailView.thumbnailImageView.loadImageUsingUrlString(urlString: (imageURl)!)
dann müsste er ja theoretisch folgendes aufrufen:
eventDetailView.thumbnailImageView.loadedCompletionHandler = {
print("complete")
}
Übersehe ich etwas?
Quellcode
- class CustomImageView: UIImageView {
- var imageUrlString: String?
- var loadedCompletionHandler: (() -> Void)?
- func loadImageUsingUrlString(urlString: String) {
- self.imageUrlString = urlString
- guard let requestUrl = URL(string: urlString) else { return }
- let request = URLRequest(url:requestUrl)
- image = nil
- if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage {
- self.image = imageFromCache
- guard let myHandler = loadedCompletionHandler else { return }
- myHandler()
- return
- }
- let task = URLSession.shared.dataTask(with: request) {
- (data, response, error) in
- if error == nil {
- DispatchQueue.main.async {
- if let imageToCache = UIImage(data: data!) {
- imageCache.setObject(imageToCache, forKey: urlString as AnyObject)
- if self.imageUrlString == urlString{
- self.image = imageToCache
- }
- }
- guard let myHandler = self.loadedCompletionHandler else { return }
- myHandler()
- }
- }
- }
- task.resume()
- }
- }
Erst starte ich das Laden des Images:
eventDetailView.thumbnailImageView.loadImageUsingUrlString(urlString: (imageURl)!)
dann müsste er ja theoretisch folgendes aufrufen:
eventDetailView.thumbnailImageView.loadedCompletionHandler = {
print("complete")
}
Übersehe ich etwas?