View Controller間を変更した後、UISwitchの状態を保存したいと思います。どんな助けでも大歓迎です!SWIFT 4でUISwitchの状態を保存する方法は?
私は別のビューコントローラでは、バックグラウンドで音楽を制御するために、UISwitchとの最初のビューコントローラを持っていない:
@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()
}
}
View Controller間でバックグラウンドで音楽が完璧に動作していて、電源を切ることはできますが、残念ながらUISwitchの現在の状態は保存されません。ファーストビューコントローラでは、スイッチの状態はオンです。
また、どのようにスライダにも適用することができるという考えはありますか?
ご協力いただければ幸いです!
おかげ
MusicHelperはモーダルで表示されますか? –
ありがとうございました。「ViewControllersを変更するときにUISwitchの状態を維持するにはどうすればよいですか?それはまさに私が探していたものでした! – Manu