在 Swift 中创建 "Favorites" 按钮 - Xcode 6
Creating "Favorites" Button in Swift - Xcode 6
我正在设置一个 "add to favorites" 按钮,这就是我所在的位置。我在我的 table 视图中添加了一个 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 中,您不需要在行尾添加 ;
。
我正在设置一个 "add to favorites" 按钮,这就是我所在的位置。我在我的 table 视图中添加了一个 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 中,您不需要在行尾添加 ;
。