我有一个通过按钮设计的复选框,我可以更改复选框图像,但是当我点击“保存”按钮时,我无法保存复选框中选中的最后一个图像。
我有一个页面,其中有一个复选框,保存按钮操作也在那里,当我点击保存复选框中的值必须保存,当我再次在该屏幕重新输入以前的任何值必须看到复选框,但每当我进入此屏幕时,复选框都显示为空。
希望有人帮助我。
BOOL checked;
- (IBAction)canFollowAction:(id)sender
{
UIButton *tappedButton = (UIButton*)sender;
if([tappedButton.currentImage isEqual:[UIImage imageNamed:@"checkBox.png"]])
{
[sender setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
}
else
{
[sender setImage:[UIImage imageNamed:@"checkBox.png"]forState:UIControlStateNormal];
}
}
- (IBAction)btnSaveAction:(id)sender
{
if(checked)
{
[btnCheckCanFollow setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
}
else
{
[btnCheckCanFollow setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
}
[self.navigationController popViewControllerAnimated:YES];
[[[iToast makeText:@"Successfully Updated"]setGravity:iToastGravityBottom]show];
}
答案 0 :(得分:1)
@kool kims - 您使用的术语保存值。有很多方法可以保留应用程序的持久数据。
NSUserDefaults
在应用程序级别保存值。.plist
文件根据您的应用程序架构,您可以从上面选择,这对您的应用程序更具相关性和效率。
编辑:
如果没有多个复选框,最简单的方法就是使用NSUserDefaults
单击“保存”按钮
时保存检查值- (IBAction)btnSaveAction:(id)sender
{
NSNumber *checkValue = [NSNumber numberWithBool:checked];
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
[standardDefaults setObject:checked forKey:@"kCheckBoxValue"];
[standardDefaults synchronize];
if(checked)
{
[btnCheckCanFollow setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
}
else
{
[btnCheckCanFollow setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
}
[self.navigationController popViewControllerAnimated:YES];
[[[iToast makeText:@"Successfully Updated"]setGravity:iToastGravityBottom]show];
}
每当您打开ViewController时,您都会从NSUserDefaults
或-viewDidLoad
获取-viewWillAppear
之前的值。
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
if ([standardDefaults objectForKey:@"kCheckBoxValue"]) {
NSNumber *checkValue = [standardDefaults objectForKey:@"kCheckBoxValue"];
checked = [checkValue boolValue];
} else {
checked = NO;
}
}
答案 1 :(得分:0)
您必须在NSUSERDEFAULTS中保存状态!
例如ON按钮单击
if (button.selected)
{
[button setSelected:YES];
[[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithBool:YES] forKey:@"REMEMBER_ME"];
}
并检查ViewDidLoad
if([[NSUserDefaults standardUserDefaults] boolForKey:@"REMEMBER_ME"] == YES)
{
[button setSelected:YES];
[button setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
}
else
{
[button setSelected:NO];
[button setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
}
答案 2 :(得分:0)
使用全局变量来存储复选框的状态,或者在NSUserdefaults中,您可以保存按钮的状态。 &安培;在控制器的viewdidload方法上判断这个状态。
答案 3 :(得分:0)
根据我的理解让我们举个例子
@property (weak, nonatomic) IBOutlet UIButton *yourButton;
及其实施行动
- (IBAction)yourMethodName:(UIButton *)sender {
int tag=_yourButton.tag; //if you have tagged your UI button save it to know which button has changed its state.
if(sender.isSelected){ //Checking state of the button whether selected or not.
UIImage *buttonImage=sender.currentImage;//save this image if your selected images randomly.
NSString *buttonText=sender.currentTitle;//gets you current text in button.
}else{
//selected state is NO
//checkBox is Off.
}
}
在这里,我已经展示了如何获得您只需存储状态所需的不同值,因为我相信您使用一个按钮/复选框,并且可以根据该状态填充图像。
但是,如果您有多个复选框或UI按钮,则可能需要使用
标记每个UIButton[_yourButton setTag:1];
并使用sender.tag
修改强>
刚刚完成了你的代码
永远不会设置或存储BOOL checked;
值。
如果条件失败,每次都这样。
此外,如果您有多个UIButton,您可能希望存储UIButton的已检查状态和标记,如前所述;