2015-04-04 105 views
0

我在UITableViewCell里有一个UIButton。用户触摸此按钮后,我想禁用它。 下面是我使用的代码:保存UIButton状态NSUserDefaults

class TextCell: UITableViewCell { 
    var buttonstate:Bool = true 
    [...] 

-

 @IBAction func ButtonPressed(sender: AnyObject) { 
       self.likesButton.enabled = false 
       NSUserDefaults.standardUserDefaults().setObject(false, forKey: "buttonstate") 
       NSUserDefaults.standardUserDefaults().synchronize() 
} 

然后:

 override func awakeFromNib() { 

      var buttonstate: [String]? = NSUserDefaults.standardUserDefaults().objectForKey("buttonstate") as? [String] 

      if((buttonstate) != nil){ 

       self.likesButton.enabled = false 

      } 
      else{ 
       self.likesButton.enabled = true 

      } 
} 

不幸的是,代码不起作用。 (触摸后按钮可以启用)。 感谢您的帮助和抱歉的问题,我刚开始..

+0

也许你需要在更新按钮状态后调用'tableView.reloadData()'。 – Zhang 2015-04-04 15:36:16

回答

1

更新你的代码像下面到您的awakeFromNib功能:

var buttonstate = NSUserDefaults.standardUserDefaults().objectForKey("buttonstate") as Bool 
self.likesButton.enabled = buttonstate 

希望它能帮助。

+0

不幸的是,它的stil不起作用,.. – Mansour 2015-04-04 12:59:35

+0

嗯,只是为了简单起见,不能将上面写成'self.likesButton.enabled = buttonState'?什么是额外的if-else检查? – Zhang 2015-04-04 15:42:16

+0

现在有什么问题? @Mansour – 2015-04-06 04:18:22