UIImageView 使用按钮滑动

UIImageView slides using Buttons


我有一个作业卡住了。这是:


做一个画廊项目:一个大的 UIImageView 和它下面的两个按钮:Back 和 Next。在项目中添加10张图片,点击按钮分别显示上一张或下一张。


所以我做了一个数组,然后一些*愚蠢的尝试*通过这个数组。但我 100% 确定对此有一些简单的答案。
谢谢!
import UIKit


class ViewController: UIViewController {
    
    @IBOutlet weak var imagesIV: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
       }
    let images = [UIImage(named: "1"), UIImage(named: "2"), UIImage(named: "3"),UIImage(named: "4"),UIImage(named: "5"),UIImage(named: "6"),UIImage(named: "7"),UIImage(named: "8"),UIImage(named: "9"),UIImage(named: "10")]
    var numberOfImages = images.count
    var  currentImage = 0

    @IBAction func forwardButton(_ sender: Any) {
        guard case currentImage + 1 < images.count else {return}
        currentImage += 1
    }
    
    @IBAction func backButton(_ sender: Any) {
    }
}

你可以试试

@IBAction func forwardButton(_ sender: Any) {
    guard currentImage + 1 < images.count else {return}
    currentImage += 1
    imagesIV.image = images[currentImage]
}

@IBAction func backButton(_ sender: Any) {
    guard currentImage - 1 >= 0  else {return}
    currentImage -= 1
    imagesIV.image = images[currentImage]
}

我认为下面是一种更好的方法,专门用于使您的代码可扩展(例如,如果您有 1000 张照片,您不想将它们一张一张地手动添加到数组中):

class ViewController: UIViewController {
    
    @IBOutlet weak var imagesIV: UIImageView!
    var  currentImageIndex = 0
    var images : [UIImage] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        for a in 1...10 {
            if let newImage = UIImage(named: "\(a)") {
                images.append(newImage)
            }
        }
        
        updateImageInImageView()
    }
    
    @IBAction func forwardButton(_ sender: Any) {
        if currentImageIndex + 1 != images.count { currentImageIndex += 1} else { currentImageIndex = 0}
        updateImageInImageView()
    }
    
    @IBAction func backButton(_ sender: Any) {
        if currentImageIndex != 0 { currentImageIndex -= 1} else { currentImageIndex = images.count - 1}
        updateImageInImageView()
    }
    
    func updateImageInImageView()  {
        imagesIV.image = images[currentImageIndex]
    }
}