如何在 UISlider 中实现 sender.selected if 语句?

How to implement sender.selected if statement into UISlider?

我正在尝试创建一个滑块,它根据滑块的值更改音频。因此,例如,如果滑块值为 0,则不会播放音频。如果值为 1,则 'song a' 播放,如果值为 2,则 'song b' 播放等

我正在使用 AVFoundation 并创建了我的声音播放器:

var soundPlayer:AVAudioPlayer = AVAudioPlayer()

我已经为我的滑块添加了插座:

@IBOutlet weak var audioSlider: UISlider!
@IBOutlet weak var audioSliderPlay: UISlider!

定义了我的音频的文件位置:

 let audioLocation = NSBundle.mainBundle().pathForResource("song a", ofType: ".mp3")

为我的播放器创建了一个 do 方法:

do {
audioSoundPlayer = try AVAudioPlayer (contentsOfURL: NSURL (fileURLWithPath: audioLocation!))
catch {
        print(error)
    }

并创建了我的动作:

@IBAction func audioSlider(sender: UISlider) {
    if (!sender.selected) {
        audioSoundPlayer.play()
        audioSoundPlayer.numberOfLoops = -1
    }

现在 - 当选择任何值时,滑块当前激活歌曲a。音频一旦开始,就无法停止。我需要添加 sender.value 并创建定义值的变量并选择我要添加的其他歌曲。

请帮忙?!

编辑 Amit 问题:

阿米特 - 我已将滑块的最大值更改为 3,用于 3 个音频。

将以下内容添加到 IBAction 后,滑块在达到最大值后仅播放一个音频:

@IBAction func audioSlider(sender: UISlider) {
    let sliderValue = (sender.value)
    if sliderValue == 1 {
       soundPlayer1.play()
        soundPlayer1.numberOfLoops = -1

    }
    else if sliderValue == 2 {
       soundPlayer2.play()
        soundPlayer2.numberOfLoops = -1


    }
    else if sliderValue == 3 {
        soundPlayer3.play()
        soundPlayer3.numberOfLoops = -1

    }
    else if sliderValue == 0 {
soundPlayer1.stop()
soundPlayer2.stop()
soundPlayer3.stop()
    }
}

你滑块的 value 属性 as sender.value as typecast it to Int and change the audio according to your need.

您需要在使用前设置滑块的 minimummaximum 值。

将默认设置为 0,最小设置为 0,最大设置为您的需要或您拥有的歌曲数量。

您可以使用 "pattern-match" 运算符 ~=:

let sliderValue = Int(slider.value)

if 100 ... 199 ~= sliderValue {
    print("play audio 1")
}
else if 200 ... 299 ~= sliderValue {
    print("play audio 2")
}

1.Set 滑块的最大值作为捆绑包中存在的音频文件数。

2.Create 包含所有音频的文件名或资源路径的数组。 喜欢

slider.maxValue = 5;
let audioPaths = ["1.mp3", "2.mp3", "3.mp3", "4.mp3", "5.mp3"];

@IBAction func audioSlider(sender: UISlider) 
{
     var index = Int(sender.value);
     let audioPath = audioPaths[index];
    do
    {
         audioSoundPlayer = try AVAudioPlayer (contentsOfURL: NSURL (fileURLWithPath: audioLocation!))
         catch 
         {
             print(error)
         } 
    }
}