繁体   English   中英

在Swift中创建“收藏夹”按钮-Xcode 6

[英]Creating “Favorites” Button in Swift - Xcode 6

我正在设置“添加到收藏夹”按钮,这就是我的位置。 我已将UIButton添加到表视图中,并且想要在单击并更改图像时将键设置为true。 然后,如果再次单击,它将把相同的键设置为false并将图像更改回默认值。

到目前为止,这是我的代码:

let isCouponFav = NSUserDefaults.standardUserDefaults().boolForKey("isCouponFav");

该按钮设置为“ Touch Up Inside”以调用函数favButtonTapped()

@IBAction func favButtonTapped(sender: UIButton){
  if isCouponFav == true{
    NsUserDefaults.standardUserDefaults().setBool(false, forKey: "isCouponFav");
    NSUserDefaults.standardUserDefaults().synchronize();
    let image = UIImage(named: "Heart_icon.png")
    sender.setImage(image, forState: UIControlState.Normal)
  }
  else{
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isCouponFav");
    NSUserDefaults.standardUserDefaults().synchronize();
    let image = UIImage(named: "heart_icon_selected.png")
    sender.setImage(image, forState: UIControlState.Normal)
  }
}

截至目前-心脏在单击时将更改为“ heart_icon_selected”,但在再次单击时将不会更改回“ Heart_icon”。

这是因为您没有在单击按钮后更改isCoupnFav的值,因此基于此行中的初始值, isCouponFav始终为true / false:

let isCouponFav = NSUserDefaults.standardUserDefaults().boolForKey("isCouponFav")

您可以将代码更改为此:(已更新为Swift 3语法)

// To make change to isCouponFav, you need to declare it as variable
// not a constant
var isCouponFav = UserDefaults.standard.bool(forKey: "isCouponFav")
...

@IBAction func favButtonTapped(sender: UIButton) {
    if isCouponFav {
        let image = UIImage(named: "Heart_icon.png")
        sender.setImage(image, for: .normal)
    } else {
        let image = UIImage(named: "heart_icon_selected.png")
        sender.setImage(image, for: .normal)
    }

    isCouponFav = !isCouponFav
    UserDefaults.standard.set(isCouponFav, forKey: "isCouponFav")
    UserDefaults.standard.synchronize()
}

而且,在Swift中,您不需要; 在行尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM