2017-04-25 46 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 
    } 
}