我想保持UISlider的状态之后,在视图控制器之间进行更改,并使UISlider在另一个视图控制器中工作(现在它仅在UISlider的当前视图控制器中工作)

我是Swift和Xcode的初学者。预先感谢您的时间和帮助:)

首先,我有一个带有音乐类的View Controller:

class MusicHelper {
    let defaults = UserDefaults.standard

    static let sharedHelper = MusicHelper()

    var musicBackgroundIntro:AVAudioPlayer = AVAudioPlayer()

    func playBackgroundMusic() {
        do {
            let audioPath = Bundle.main.path(forResource: "Music", ofType: "mp3")
            try musicBackgroundIntro = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
            musicBackgroundIntro.numberOfLoops = -1
            musicBackgroundIntro.prepareToPlay()
            musicBackgroundIntro.play()

        } catch {
            print("Cannot play the file")
        }
    }

    func stopBackgroundMusic() {
        musicBackgroundIntro.stop()
    }


其次,我还有另一个带有UISlider的View Controller:

@IBOutlet weak var SliderMusic: UISlider!

@IBAction func checkStateSliderMusic(_ sender: UISlider) {
    MusicHelper.sharedHelper.musicBackgroundIntro.volume = sender.value
}


是否知道如何将UISlider应用于另一个View Controller并保持状态(音量修改)?

最佳答案

当视图控制器加载时,您可以基于当前音量值设置滑块值。在viewDidLoadUIViewController方法中,设置滑块的值。

例:

override func viewDidLoad() {
    super.viewDidLoad()

    musicSlider.value = Float(MusicHelper.sharedHelper.musicBackgroundIntro.volume)
}

关于ios - 更改ViewControllers时如何保持UISlider状态? ( swift ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47230647/

10-13 08:17