登录界面的记住密码按钮,如何在下次app启动时显示上次关闭前的状态? 记住密码登录界面 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你是想记录某个数据,那用全局变量肯定不行,因为全局变量是和app生命周期一致的。如果数据不是很多、不是很大的话,记录在NSUserDefaults里。如果你是想在app启动的时候,恢复到上次退出时的页面,就看下UI状态保持和恢复,这是iOS6系统增加的功能 [[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]; } }怎么不行啊,是我哪儿做错了么 你想在viewWillAppear的时候把remember_btn的image设置为正确的值?先看看在viewWillAppear的时候self.remember_btn是不是为nil,如果不是的话,再看是不是在后面被覆盖了。 我觉得不应该在viewWillAppear里做这件事,其实你只需要在刚进这个页面的时候做初始化的时候判断一下就行了,没必要每次调viewWillAppear的时候都判断+设置image。而且你的判断方式其实也有问题,你是判断是否为nil,但无论用户是选择记住还是不记住,你都往NSUserDefaults的remember中保存了一个值,那这个判断就永远为真了 大虾,请问你们在项目中一般都是怎么处理这个记住密码的按钮的呢?而且下次启动app与上次关闭的时候的状态是一样的 你存个布尔值在NSUserDefaults里就行了,进VC的时候读出来,用户修改的时候再存一次 ios线程问题 IPhone屏幕方向设置 关于IPHONE做web的问题 新手,问个基础问题 求助-IPAD 充电时,右上角,为什么会显现“没有充电” iOS开发,deflate算法进行数据压缩 求指教,UIScrollView 中UIPageControl问题 设置了ARC,为什么还需要@autoreleasepool tableview删除cell时总是报错 说增加的行与删除不一致 Objective-C 字典怎么按值比较 求大神,这是什么原因啊 左侧滑动抽屉View放了一个tableView(或者任何控件),都无法与之交互(点击,滑动等等)
如果你是想在app启动的时候,恢复到上次退出时的页面,就看下UI状态保持和恢复,这是iOS6系统增加的功能
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];
}
}
怎么不行啊,是我哪儿做错了么
先看看在viewWillAppear的时候self.remember_btn是不是为nil,如果不是的话,再看是不是在后面被覆盖了。
而且你的判断方式其实也有问题,你是判断是否为nil,但无论用户是选择记住还是不记住,你都往NSUserDefaults的remember中保存了一个值,那这个判断就永远为真了