2016-10-02 2 views
-1

Я делаю функцию в своем приложении, которая позволяет отключить музыку, я поместил туда переключатель, чтобы вы могли изменить его вкл./Выкл. Тем не менее, коммутатор отлично работает в приложении, когда я закрываю контроллер vie, и я его подтягиваю, он все равно покажет, как он был оставлен, но когда вы закрываете приложение и открываете его, он выглядит так, как будто он выключен но он все еще играет музыку. Это мой код, и я приложу картинку.Сохранение данных с пользовательскими настройками по умолчанию

import Foundation 
import UIKit 
import SpriteKit 
import AVFoundation 




var bombSoundEffect: AVAudioPlayer! 
var Ghost = SKSpriteNode() 

class SecondViewController: UIViewController { 

var sw = false 




@IBOutlet var mySwitch: UISwitch! 

@IBAction func switchpressed(_ sender: AnyObject) { 

let defaults = UserDefaults.standard 

    if mySwitch.isOn{ 
       defaults.set(true, forKey: "SwitchState") 

     if bombSoundEffect != nil { 
      bombSoundEffect.stop() 
      bombSoundEffect = nil 

     } 

    } 
    else{ 
     defaults.set(false, forKey: "SwitchState") 

     let path = Bundle.main.path(forResource: "newmusic.wav", ofType:nil)! 
     let url = URL(fileURLWithPath: path) 


     do { 
      let sound = try AVAudioPlayer(contentsOf: url) 
      bombSoundEffect = sound 
      sound.numberOfLoops = -1 
      sound.play() 
     } catch { 
      // couldn't load file :(
     } 

    } 


} 


override func viewDidLoad() { 
    super.viewDidLoad() 

    super.viewDidLoad() 

    let defaults = UserDefaults.standard 

    if (defaults.object(forKey: "SwitchState") != nil) { 
     mySwitch.isOn = defaults.bool(forKey: "SwitchState") 


    } 
} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Release any cached data, images, etc that aren't in use. 
} 


} 

и здесь картина enter image description here Если вы не поняли, что я сказал выше, пожалуйста, задавайте вопросы.

+0

Вы играете музыку в своем делете приложения или весь ваш код в этом контроллере? – WMios

ответ

1

Как я понимаю из вашего кода, вы не проверяете Пользовательские по умолчанию. В вашем viewDidLoad вам необходимо проверить значение bool вашего По умолчанию пользователю установлено значение true или нет.

override func viewDidLoad() { 
    super.viewDidLoad() 
    let defaults = UserDefaults.standard 

    //check bool Value is set to true or not 

    if defaults.bool(forKey: "SwitchState") == true { 
     mySwitch.isOn = defaults.bool(forKey: "SwitchState") 

    } else { 
     print("false") 

    } 
} 

Проверьте этот код. Надеюсь, это поможет вам.

+0

Я не получаю никаких ошибок, но когда я перезапускаю приложение, музыка все еще играет, но переключатель переключается на немой –

+0

Попробуйте этот код, и вы можете показать мне, что вы делаете в делетете приложения. –

+0

У меня ничего нет в делегате приложения –

0

В viewDidLoad вы должны проверить, когда нужно приостановить музыку:

// Keep this part the same 
let defaults = UserDefaults.standard 

if (defaults.object(forKey: "SwitchState") != nil) { 
    mySwitch.isOn = defaults.bool(forKey: "SwitchState") 
} 

// Check to see if the switch is off, if so, stop the music 
if !mySwitch.isOn { 
    bombSoundEffect.stop() 
    bombSoundEffect = nil 
} 

Вы также можете взять дубликат вызова super.viewDidLoad.

Примечание: Это действительно похоже, есть больше кода в контроллере представления, потому что нет ничего в настоящее время там будет играть музыку, так что это решение может не работать при условии, что вы не имеете предоставили достаточную информацию.

+0

Я ввел именно то, что вы положили, и когда я открываю viewController, он отключает музыку. –

+0

@OrenEdrich. Разве это не то, что вы хотите? – WMios

+0

Нет, у меня есть приложение, воспроизводящее музыку в фоновом режиме, и я этот ViewController - это меню настроек. Поэтому у меня есть переключатель, который позволяет пользователю отключать музыку. Тем не менее, у меня проблема с сохранением, если переключатель установлен на нашем выключенном –

Смежные вопросы