myfan
myfan

Reputation: 11

I can't get any clue why this doesn't work out (SWIFT)

I'm making a photo view with back and forward button. The code I made shows a picture but the buttons don't work. What am I missing?

import UIKit

class ViewController: UIViewController {
    var presentImg: UIImage?
    var numImage = 1
    var imgOn:UIImage?
    
    @IBOutlet var imgView: UIImageView!
    @IBAction func btnBack(_ sender: UIButton) {
        numImage -= 1
    }
    @IBAction func btnForward(_ sender: UIButton) {
        numImage += 1
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let imageName = String(numImage) + ".jpeg"
        imgOn = UIImage(named: imageName)
        imgView.image = imgOn
    }
}

Upvotes: 1

Views: 35

Answers (1)

Sulthan
Sulthan

Reputation: 130102

Simply put, you are only updating an internal variable, you are not updating the image itself:

class ViewController: UIViewController {
    var presentImg: UIImage?
    var numImage = 1
    var imgOn:UIImage?
    
    @IBOutlet var imgView: UIImageView!

    @IBAction func btnBack(_ sender: UIButton) {
        numImage -= 1
        updateImage()
    }
    @IBAction func btnForward(_ sender: UIButton) {
        numImage += 1
        updateImage()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        updateImage()
    }

    private func updateImage() {
        let imageName = "\(numImage).jpeg"
        imgOn = UIImage(named: imageName)
        imgView.image = imgOn
    }
}

Upvotes: 1

Related Questions