繁体   English   中英

我的问题是关于在按下按钮时更改UIImage

[英]My Question is about changing a UIImage when a button is pressed

因此,我对编码非常陌生,可以在Udemy上学习Swift 3。 我正在尝试通过构建一个包含3个声音文件的音乐应用程序来测试自己的技能,此刻我正在努力获取按下UIButton后应播放的当前歌曲的图像。 我创建了一个包含图像文件的数组,但是由于某种原因,它仅显示3张图像中的2张,并且不会继续前进,也不会让我循环显示图像,欢迎任何建议。

我尝试了一个for-in循环,这不是我目前想要的循环。 我正在尝试获取更新songImage的函数以接受我的数组并链接到sender.tag属性以遍历图像

class ViewController: UIViewController {

// Instance Variables
var playTheSong : AVAudioPlayer!

var imageArray = ["songImage1", "songImage2", "songImage3"]
var allSongNamesAndDescriptions = MusicClassBank()
var nextImage = 0

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    albumArtwork.image = UIImage(named: "songImage3")

}

@IBAction func buttonPressed(_ sender: UIButton) {

    updateSongImage(selectedImageFile: imageArray[sender.tag - 1])

    nextImage = nextImage + 1
}

@IBOutlet weak var albumArtwork: UIImageView!
@IBOutlet weak var nameOfSong: UILabel!
@IBOutlet weak var songDescription: UILabel!

// Cycle through images upon button being pressed.

func updateSongImage(selectedImageFile : String) {

    if nextImage <= 3 {
    albumArtwork.image = UIImage(named: selectedImageFile)
    }
    else {
        nextImage = 0
    }

}

现在,代码仅显示视图加载时显示的图像以及数组中的下一个图像。 我不能让它遍历整个数组并在按下按钮时继续前进。

您正在使用“下一个” UIButton sender.tag作为参数来更改图像,但是该标签永远不会更改。 所以:

  • viewDidLoad()方法中,显示第三个图像
  • 当您按下“下一步”按钮时, sender.tag图像更新为1(可能sender.tag为1)
  • 再按一次按钮不会更新图像

您可以尝试如下操作:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    //Set the first image
    updateSongImage(selectedImageFile : imageArray[0])
}

@IBAction func buttonPressed(_ sender: UIButton) {
    //If nextImage is less than imageArray.count - 1 (because arrays start with 0), add one to nextImage. Else, nextImage return to zero
    nextImage = nextImage < imageArray.count - 1 ? nextImage + 1 : 0
    updateSongImage(selectedImageFile: imageArray[nextImage])
}

func updateSongImage(selectedImageFile : String) {
    //Here we only need to update the image, because the if is outside
    albumArtwork.image = UIImage(named: selectedImageFile)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM