2017-04-25 45 views
-1

如何保存按鈕的開關值?我有一個開關按鈕,當用戶打開應用程序並單擊關閉按鈕時,我希望應用程序將其保存,以便重新打開應用程序時,該按鈕的值仍爲關閉。希望這可以通過使用User Defaults來完成。我的代碼:Swift - 如何保存圖像按鈕?

class ViewController: UIViewController { 
    var soundEnable:Bool = true 
    var soundImage:UIImage? 

    @IBAction func soundbtn(_ sender: UIButton) { 
     let soundButton = sender 

     if (soundEnable) { 
      soundImage = UIImage.init(named: "mute.png") 
      soundEnable = false 
     } else { 
      soundImage = UIImage.init(named: "sound.png") 
      soundEnable = true 
     } 

     soundButton.setImage(soundImage, for: UIControlState.normal) 
    } 
} 

See image

+0

你想要什麼時候關閉應用程序,然後你回來,那麼它應該顯示選定的圖像?或者你想要改變點擊行動? –

+0

@Dharmbir Singh我希望它顯示選定的圖像。謝謝! –

+0

lly然後看到我編輯的答案。 –

回答

0

請寫這些線viewDidLoad方法

override func viewDidLoad() { 
    super.viewDidLoad() 
    if (UserDefaultsManager.useDarkTheme) { 
     soundImage = UIImage.init(named: "mute") 
     print(UserDefaultsManager.useDarkTheme) 

} else { 
     soundImage = UIImage.init(named: "sound") 
     print(UserDefaultsManager.useDarkTheme) 
    } 
} 
+0

不要複製其他人的答案,你只需編輯我的答案 –

+0

@NiravD看到我上面的評論,我已經編輯了他的關注之後進行了編輯。這不是複製粘貼,即使我在25分鐘前回答。 –

+1

@Dharmbir Singh我使用swift 3,Bool值在'.set(value:Bool,forKey:String)' –

0
  1. 您需要設置圖像多了一個發生在viewDidLoad中。
  2. 您輸入setImage錯誤的參數:

    soundButton.setImage(soundImage爲:UIControlState())

它應該是一個特定的狀態:

soundButton.setImage(soundImage, for: UIControlState.normal) 
+0

謝謝你的回答! –

0
@IBOutlet weak var backgroundImage: UIImageView! 

let ImageNameKey = "ImageNameKey" 

let soundbg = UIImage(named: "sound") 
let mutebg = UIImage(named: "mute") 

override func viewDidLoad() { 
    super.viewDidLoad() 

    //Sound.play(file: "bg", fileExtension: "wav", numberOfLoops: -1) 

    let defaults = UserDefaults.standard 
    if let name = defaults.string(forKey: ImageNameKey) { 
     if (name == "sound") { 
      backgroundImage.image = soundbg 
     } else { 
      backgroundImage.image = mutebg 
     } 
    } 
} 

@IBAction func clickbtn(_ sender: UIButton) { 

    let defaults = UserDefaults.standard 

    if(backgroundImage.image == soundbg){ 
     backgroundImage.image = mutebg 
     defaults.set("mute", forKey: ImageNameKey) 
     Sound.enabled = false 
    } 
    else{ 
     backgroundImage.image = soundbg 
     defaults.set("sound", forKey: ImageNameKey) 
     Sound.enabled = true 
    } 
}