Alien8tr96
Alien8tr96

Reputation: 23

Kingfisher iOS image not loading

I am trying to dynamically set a UIImageView using Kingfisher. The context is there is a TableView on the previous screen of different selectable rows and then when the row is selected a details UIView shows which has more information, including an image. I have gone to the Kingfisher documentation and found that the declaration belongs in the viewDidLoad as i have it but i still cannot get the image to load. I have also verified with debugging that the URL being passed to the Kingfisher is a link to a picture. I am thinking this may have to do with the image being set on a background thread but i am unsure how to fix that if that is the case. I have tried moving the implementation of the Kingfisher to the viewWillAppear and viewDidAppear functions and they still do not display the image even after an extended amount of wait time

Here is my code with some unrelated functionality removed.

import UIKit
import Kingfisher

class DetailsViewController: UIViewController {

@IBOutlet weak var thumbnail: UIImageView!

var thumbnailURL: URL?

override func viewDidLoad() {
    super.viewDidLoad()

    self.thumbnail.kf.setImage(with: thumbnailURL)

  ...................................................


//        self.thumbnail.image = UIImage(named: "image1")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

Upvotes: 0

Views: 3493

Answers (2)

kd02
kd02

Reputation: 430

Try something like this

import UIKit
import Kingfisher

class DetailsViewController: UIViewController {

    @IBOutlet weak var thumbnail: UIImageView!

    var thumbnailURL: URL?

    override func viewDidLoad() {
        super.viewDidLoad()

        if let url = self.thumbnailURL {

            self.thumbnail.setImage(with: url)
        }
    }
}

I have feeling the optional URL is causing the problem.

Upvotes: 1

Alien8tr96
Alien8tr96

Reputation: 23

kd02 - I have found the answer to my question. When you asked if it was http or https i remembered that you have to enable http in xcode 9 now because of the security enhancement. I did that and now it works.

Upvotes: 1

Related Questions