2015-04-04 69 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