【发布时间】:2017-04-15 18:23:58
【问题描述】:
我正在尝试通过保存状态来完成我最喜欢的按钮,即使我退出视图 \ App 也是如此。如果有人能告诉我我该怎么做就太好了 这个,我使用 Xcode 8 和 Swift 3 编码。
//create a new button
let Favoritebutton: UIButton = UIButton(type: UIButtonType.custom)
//set image for button
Favoritebutton.setImage(UIImage(named: "EmptyHeart.png"), for: .normal)
Favoritebutton.setImage(UIImage(named: "FilledHeart.png"), for: .selected)
//add function for button
Favoritebutton.addTarget(self, action: #selector(self.button), for: .touchUpInside)
//set frame
Favoritebutton.frame = CGRect(x:0,y: 0,width: 35,height: 35)
Favoritebutton.isSelected = UserDefaults.standard.bool(forKey: "isSaved")
let barButton = UIBarButtonItem(customView: Favoritebutton)
//assign button to navigationbar
self.navigationItem.rightBarButtonItem = barButton
let state = UserDefaults.standard.bool(forKey: "isSaved") ?? false
}
@IBAction func button(sender: UIButton) {
sender.isSelected = !sender.isSelected
if let Favoritebutton = sender as? UIButton {
Favoritebutton.isSelected = UserDefaults.standard.bool(forKey: "isSaved")
if Favoritebutton.isSelected {
// set selected
Favoritebutton.isSelected = true
// set badge Value to tabbar item.
let tabItem = self.tabBarController?.tabBar.items![3]
sel_val = tabItem?.badgeValue
if(sel_val == nil){
sel_val = "0"
}
let sel_num = Int(sel_val!)
tabItem!.badgeValue = String(format: "%d", sel_num! + 1) as String
//Add Favorite
let Fav: NSMutableArray = []
Fav.add(barImage)
Fav.add(barName)
Fav.add(streetName)
favorite.add(Fav)
} else {
// set deselected
Favoritebutton.isSelected = false
//Badge Value Count.
let tabItem = self.tabBarController?.tabBar.items![3]
sel_val = tabItem?.badgeValue
if(sel_val == nil){
sel_val = "0"
}
let sel_num = Int(sel_val!)
tabItem!.badgeValue = String(format: "%d", sel_num! - 1) as String
//Remove Favorite
let Fav: NSMutableArray = []
Fav.add(barImage)
Fav.add(barName)
Fav.add(streetName)
favorite.remove(Fav)
}
}
【问题讨论】:
-
您正在保存状态,但您需要在
viewDidLoad中重新读取它。 -
请问我该怎么做? @vadian
-
您的代码只会将“isSaved”键保存为真。您从未编写代码来加载或保存按钮的选定状态。有关将按钮的选定状态加载并保存到
UserDefaults的代码,请参见 @Scinfu 的答案。 -
@DuncanC 你是说 Scinifu 的代码是正确的?和 vadian 说它不是......
标签: ios swift xcode uibutton nsuserdefaults