我有一个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,如果我重新加载页面,我怎么能保持相同的状态呢?
请分享您的想法。 感谢
答案 0 :(得分:5)
在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);
}
答案 1 :(得分:3)
看起来您遇到的问题是,当状态发生变化时会调用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:方法。