登录界面的记住密码按钮,如何在下次app启动时显示上次关闭前的状态?

liujieyuu 2014-09-06 02:50:53
登录界面的记住密码按钮,如何在下次app启动时显示上次关闭前的状态?
现在是这样写的:
全局变量:bool check = YES;

[[self.remember_btn rac_signalForControlEvents:UIControlEventTouchUpInside]subscribeNext:^(UIButton *btn) {
UIImage *imgNormal = [UIImage imageNamed:@"ic_yes"];
UIImage *imgSelected = [UIImage imageNamed:@"ic_yes_press"];
if (check == YES) {
[btn setImage:imgSelected forState:UIControlStateNormal];
[store setString:self.passWordText.text forKey:@"pwd"];
[store synchronize];
check = NO;
}else{
[btn setImage:imgNormal forState:UIControlStateNormal];
[store removeItemForKey:@"pwd"];
[store synchronize];
check = YES;
}
}];
...全文
379 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yw6649 2014-09-13
  • 打赏
  • 举报
回复
直接把数据存储到沙盒目录下 等下次程序运行是再从沙盒目录下读取出来放到登陆注册框中
Bannings 2014-09-09
  • 打赏
  • 举报
回复
引用 6 楼 liujieyuu 的回复:
大虾,请问你们在项目中一般都是怎么处理这个记住密码的按钮的呢?而且下次启动app与上次关闭的时候的状态是一样的
你存个布尔值在NSUserDefaults里就行了,进VC的时候读出来,用户修改的时候再存一次
liujieyuu 2014-09-08
  • 打赏
  • 举报
回复
亲,思路有没有错呢?
Bannings 2014-09-08
  • 打赏
  • 举报
回复
你想在viewWillAppear的时候把remember_btn的image设置为正确的值? 先看看在viewWillAppear的时候self.remember_btn是不是为nil,如果不是的话,再看是不是在后面被覆盖了。
liujieyuu 2014-09-08
  • 打赏
  • 举报
回复
大虾,请问你们在项目中一般都是怎么处理这个记住密码的按钮的呢?而且下次启动app与上次关闭的时候的状态是一样的
Bannings 2014-09-08
  • 打赏
  • 举报
回复
我觉得不应该在viewWillAppear里做这件事,其实你只需要在刚进这个页面的时候做初始化的时候判断一下就行了,没必要每次调viewWillAppear的时候都判断+设置image。 而且你的判断方式其实也有问题,你是判断是否为nil,但无论用户是选择记住还是不记住,你都往NSUserDefaults的remember中保存了一个值,那这个判断就永远为真了
liujieyuu 2014-09-07
  • 打赏
  • 举报
回复
[[self.remember_btn rac_signalForControlEvents:UIControlEventTouchUpInside]subscribeNext:^(UIButton *btn) { UIImage *imgNormal = [UIImage imageNamed:@"ic_yes"]; UIImage *imgSelected = [UIImage imageNamed:@"ic_yes_press"]; NSUserDefaults *def =[NSUserDefaults standardUserDefaults]; if (check == YES) { [btn setImage:imgSelected forState:UIControlStateNormal]; [store setString:self.passWordText.text forKey:@"pwd"]; [store synchronize]; [def setObject:@"ic_yes_press" forKey:@"remember"]; [def synchronize]; check = NO; }else{ [btn setImage:imgNormal forState:UIControlStateNormal]; [store removeItemForKey:@"pwd"]; [store synchronize]; [def setObject:@"ic_yes" forKey:@"remember"]; [def synchronize]; check = YES; } -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:YES]; NSUserDefaults *def = [NSUserDefaults standardUserDefaults]; if (nil != [def stringForKey:@"remember"]) { [self.remember_btn setImage:[UIImage imageNamed:[def stringForKey:@"remember"]] forState:UIControlStateNormal]; } } 怎么不行啊,是我哪儿做错了么
Bannings 2014-09-06
  • 打赏
  • 举报
回复
如果你是想记录某个数据,那用全局变量肯定不行,因为全局变量是和app生命周期一致的。如果数据不是很多、不是很大的话,记录在NSUserDefaults里。 如果你是想在app启动的时候,恢复到上次退出时的页面,就看下UI状态保持和恢复,这是iOS6系统增加的功能

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧