【发布时间】:2018-04-23 03:53:03
【问题描述】:
我想在视图控制器之间更改后保存 UISwitch 的状态。任何帮助将不胜感激!
我有第一个带有 UISwitch 的 View Controller,用于控制不同 View Controller 中的背景音乐:
@IBOutlet weak var SwitchMusic: UISwitch!
let defaults = UserDefaults.standard
var switchON : Bool = false
@IBAction func checkState(_ sender: UISwitch) {
if (sender.isOn == true)
{
switchON = true
defaults.set(switchON, forKey: "switchON")
MusicHelper.sharedHelper.playBackgroundMusic()
}
if (sender.isOn == false)
{
switchON = false
defaults.set(switchON, forKey: "switchON")
MusicHelper.sharedHelper.stopBackgroundMusic()
}
}
如果开关处于打开或关闭状态,还有一个第二个视图控制器用于在后台加载或不加载音乐:
override func viewDidLoad() {
super.viewDidLoad()
if defaults.value(forKey: "switchON") != nil{
let switchON: Bool = defaults.value(forKey: "switchON") as! Bool
if switchON == true{
MusicHelper.sharedHelper.playBackgroundMusic()
}
else if switchON == false{
MusicHelper.sharedHelper.stopBackgroundMusic()
}
}
}
我也有音乐课:
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()
}
}
现在它在视图控制器之间的背景音乐完美地工作,并且可以关闭和打开......但不幸的是不要保存 UISwitch 的当前状态,并且总是在我进入第一个视图时控制器 Switch 的状态为 On。
还有关于如何在 Slider 中应用的任何想法?
任何帮助将不胜感激!
谢谢
【问题讨论】:
-
MusicHelper 是否以模态方式显示?
-
谢谢,我在“如何在更改 ViewControllers 时保持 UISwitch 状态?”中找到了解决方案。这正是我想要的!
标签: ios swift uislider uiswitch