現在、tableViewCellにボタンがあり、このボタンを押すとチェックマークが表示されます。私はNSUserDefaultsにUIButtonの状態を保存しようとしています。また、NSUserDefaultsに保存されたUIButton状態を削除するXボタンを持つセルを持つ別のviewControllerがあります。私はこれを試しました しかし、それはtableViewCellで動作するように見えませんでした。UIButtonの状態をtableViewCellに保存するには?
カスタムボタン:
class SaveButton: UIButton {
// Images
let buttonChecked = UIImage(named: "save_icon_greenCheck")
let buttonUnChecked = UIImage(named: "save_icon_white")
//Bool Property
override var selected: Bool{
didSet{
if selected {
self.setImage(buttonChecked, forState: UIControlState.Normal)
}else{
self.setImage(buttonUnChecked, forState: UIControlState.Normal)
}
NSUserDefaults.standardUserDefaults().setObject(selected, forKey: "isBtnChecked")
// NSUserDefaults.standardUserDefaults().synchronize()
}
}
override init(frame: CGRect){
super.init(frame:frame)
self.layer.masksToBounds = true
self.setImage(buttonUnChecked, forState: UIControlState.Normal)
self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
func buttonClicked(sender: UIButton) {
self.selected = !self.selected
}
}
TableViewCell:
class TvShowCell: UITableViewCell {
@IBOutlet var MainPosterImage: UIImageView!
@IBOutlet var MainTitleLabel: UILabel!
@IBOutlet var imageWrapper: UIView!
@IBOutlet weak var saveButton: SaveButton!
override func awakeFromNib() {
saveButton.selected = NSUserDefaults.standardUserDefaults().boolForKey("isBtnChecked") // here we obtain the last state of the button
}
@IBAction func saveButtonPressed(sender: AnyObject) {
sender.setImage(UIImage(named: "save_icon_greenCheck"), forState: UIControlState.Normal)
}
}
IBAction UIButtonStateを削除するには:ここに私の現在のコードがある
@IBAction func removeSavedObject(sender: AnyObject) {
let searchTermsData = myDefaults.objectForKey(SAVED_SHOWS_KEY) as? NSData
let searchTermsArray = NSKeyedUnarchiver.unarchiveObjectWithData(searchTermsData!) as? [TvShowInfo]
favoriteShowsArray = searchTermsArray!
let location: CGPoint = sender.convertPoint(CGPointZero, toView: self.favoritesTableView)
let indexPath: NSIndexPath = self.favoritesTableView.indexPathForRowAtPoint(location)!
showToRemove = favoriteShowsArray[indexPath.row]
//save UIButtonState here
let save = SaveButton()
save.selected = false
myDefaults.setObject(save, forKey: "isBtnChecked")
let savedData = NSKeyedArchiver.archivedDataWithRootObject(favoriteShowsArray)
myDefaults.setObject(savedData, forKey: SAVED_SHOWS_KEY)
myDefaults.synchronize()
favoritesTableView.reloadData()
}
の可能性のある重複した[ボタンが押されたときのUITableViewCellのカスタムビューを表示するには?](http://stackoverflow.com/questio ns/36531010/how-to-show-custom-view-in-uitableview-cell-when-button-pressed) –
UITableViewControllerの 'removeSavedObject'関数はどこにありますか? –