Reputation: 305
I am working on UIButton
as a check box, when I press button than checkbox selected image is appear and when press again checkbox unselected image is appear. if I press button image is appear, but it again disappear when I come back to that view again.
- (void)viewDidLoad {
[super viewDidLoad];
_car.delegate = self;
_car.keyboardType = UIKeyboardTypeNumberPad;
[_PreCheck setBackgroundImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
[_PreCheck setBackgroundImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateSelected];
[_PreCheck addTarget:self action:@selector(checkboxSelected:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
-(void)checkboxSelected:(id)sender
{
if ((checkBoxSelected = !checkBoxSelected)) {
[_PreCheck setSelected:checkBoxSelected];
NSLog(@"selected");
NSString *selected = @"selected";
NSUserDefaults *select = [NSUserDefaults standardUserDefaults];
[select setObject:selected forKey:@"checkboxselected"];
[select synchronize];
}
else
{
NSLog(@"not selected");
[_PreCheck setSelected:notselected];
}
}
Upvotes: 1
Views: 61
Reputation: 11839
Store the button state in NSUSerDefaults
.
Then In viewDidLoad
get the state and based on that load image.
- (void)viewDidLoad
{
// Your code
// get selected state from user defaults.
BOOL selected = [[NSUserDefaults standardUserDefaults] boolForKey:@"buttonstateKey"];
if (selected)
{
// set selected image
}
else
{
// set regular image
}
}
Upvotes: 1
Reputation: 49730
Based on your posted code your ViewDidLoad
must be check with current NSUserDefaults store value is selected or not based on it first you need to set button check uncheck image. so following is your viewDidLoad
Code look like:
- (void)viewDidLoad {
[super viewDidLoad];
_car.delegate = self;
_car.keyboardType = UIKeyboardTypeNumberPad;
NSString *state = [[NSUserDefaults standardUserDefaults] stringForKey:@"btnstate"];
if([state isEqualToString:@"selected"])
{
[_PreCheck setBackgroundImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
[_PreCheck setSelected:YES];
}
else
{
[_PreCheck setBackgroundImage:[UIImage imageNamed:"[email protected]"] forState:UIControlStateNormal];
[_PreCheck setSelected:NO];
}
[_PreCheck addTarget:self action:@selector(checkboxSelected:) forControlEvents:UIControlEventTouchUpInside];
}
Now set the method for check-uncheck like following:
-(void)checkboxSelected:(UIButton*)sender
{
sender.selected = !sender.selected;
if([sender isSelected])
{
[_PreCheck setBackgroundImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
[[NSUserDefaults standardUserDefaults] setValue:@"selected" forKey:@"btnstate"];
}
else
{
[_PreCheck setBackgroundImage:[UIImage im ageNamed:@"[email protected]"] forState:UIControlStateNormal];
[[NSUserDefaults standardUserDefaults] setValue:@"notselected" forKey:@"btnstate"];
}
}
Hope that work or you. just replace your code with my posted code no need to do other changes.
Upvotes: 3