我有一个UISwitch
,我需要将字符串中的值加载到数组中,当将开关状态更改为OFF到ON时。我使用了下面的代码,但是不工作。
-(IBAction)toggleSwitch1:(id)sender {
if (addSwitch.on) {
[addSwitch addTarget:self action:@selector(addName:) forControlEvents:UIControlEventValueChanged];
NSLog(@"%@",userName);
}else {
NSLog(@"No");
}
}
-(void)addName:(UIControl*)sender {
[alertList addObject:userName];
NSLog(@"AlertList: %@", alertList);
}
如果一旦状态更改为ON,如果我重新加载页面,我如何保持相同的状态?
请分享你的想法。由于
在viewDidLoad
中使用这个:
-(void)viewDidLoad
{
[super viewDidLoad];
NSUserDefaults *userdefault=[NSUserDefaults standardUserDefaults];
if([userdefault boolForKey:@"yes"]) {
addSwitch.on=YES;
} else {
addSwitch.on=NO;
}
}
-(IBAction)toggleSwitch1:(id)sender
{
NSUserDefaults *userdefault=[NSUserDefaults standardUserDefaults];
if (addSwitch.on) {
[self performSelector:@selector(addName:) withObject:userName];
NSLog(@"%@",userName);
[userdefault setBool:YES forKey:@"yes"];
} else {
[userdefault setBool:NO forKey:@"no"];
NSLog(@"No");
}
}
-(void)addName:(UIControl*)sender
{
[alertList addObject:sender];
NSLog(@"AlertList: %@", alertList);
}
看起来您遇到的问题是toggleSwitch方法在状态更改时被调用,然后它开始使用addTarget:方法侦听更改。您应该选择其中一个来处理更改。
-(IBAction)toggleSwitch1:(id)sender{
if (addSwitch.on) {
[self addName:userName];
} else {
//do something else
}
}
-(void)addName:(UIControl*)sender{
[alertList addObject:userName];
}
要保存开关状态,只需使用另一个变量来存储开关状态,并调用viewDidLoad中的setOn:animated:方法。