我想做一个简单的应用程序,患者可以选择预约数据。
点击按钮后,我使用按钮显示每个数据。按钮将被禁用,因此用户无法多次选择相同的按钮。我要在数组中存储按钮的标签(我的标签代表从1到31的DATA)然后这个数组存储在NSUserDefaults
。
现在我的问题是,当下次用户来时,所有按钮都已启用,但我想禁用那些已经选中的按钮
当用户点击按钮后,将调用
-(void)AddAppointment :(UIButton *)sender
{
int DATA=(int)sender.tag;
//add data in array
[arrayApp addObject:[NSNumber numberWithInt:DATA]];
NSLog(@"AppointmentFixed=%@",arrayApp);
UIButton *btnTemp=(UIButton *)[scrlView viewWithTag:DATA];
btnTemp.enabled=false;
[btnTemp setBackgroundColor:[UIColor grayColor]];
//add array in nsuserdefault
userDefault=[NSUserDefaults standardUserDefaults];
[userDefault setObject:arrayApp forKey:@"data"];
}
我使用以下代码来禁用下次用户来时已选择的按钮
- (void)viewDidLoad
{
[super viewDidLoad];
arrayApp=[[NSMutableArray alloc]init];
//get the array from nsuserdefault (not working )
arrayTemp=[[NSMutableArray alloc]init];
userDefault=[NSUserDefaults standardUserDefaults];
arrayTemp= [userDefault objectForKey:@"data"];
//ArrayTemp doenst get any array it is just null :(
for (int i=0; i<=arrayTemp.count; i++)
{
UIButton *btn2=(UIButton *)[scrlView viewWithTag:[[arrayTemp objectAtIndex:i+1] integerValue]];
btn2.enabled=YES;
[btn2 setBackgroundColor:[UIColor grayColor]];
}
}
答案 0 :(得分:1)
代码似乎是正确的,用于在NSUserDefaults
中设置数组并从NSUserDefaults
获取数组。
我所看到的唯一错误就是您key
用于设置,并且NSUserDefaults
与synchronize
之间的价值不同。
在从UserDefaults获取数据时将数组设置为UserDefaults并键入“数据”时使用键“日期”。
另外,当您进行如下任何更改时,请不要忘记[[NSUserDefaults standardUserDefaults] synchronize];
UserDefaults,
map:
for each car
evaluate whether it should be true or false
key = (true/false)
emit(key, { count : 1 })
reduce:
(input is true/false as key, array of count-documents as value)
for each value-document
sum up the count
return key, sum
答案 1 :(得分:0)
您的错误是存储和检索数组时NSuserDefault密钥不同。你可能只是错过了循环中的第一个数组索引
- (void)viewDidLoad
{
[super viewDidLoad];
arrayApp=[[NSMutableArray alloc]init];
//get the array from nsuserdefault (not working )
arrayTemp=[[NSMutableArray alloc]init];
userDefault=[NSUserDefaults standardUserDefaults];
arrayTemp= [userDefault objectForKey:@"date"];
//ArrayTemp doenst get any array it is just null :(
for (int i=0; i<arrayTemp.count; i++)
{
UIButton *btn2=(UIButton *)[scrlView viewWithTag:[[arrayTemp objectAtIndex:i] integerValue]];
btn2.enabled=YES;
[btn2 setBackgroundColor:[UIColor grayColor]];
}
}