我正在使用切换控件,每当我从页面导航或重新启动应用程序时,其值设置为默认“关闭”。如何过来,如果按下它应该保持开启或如果按下它应该保持关闭,直到我们手动更改?
这是我的代码,我正在为scrollview分配和设置ffram
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell new";
listData =[self.tableContents objectForKey:[self.sortedgroups objectAtIndex:[indexPath section]]];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
}
NSUInteger row = [indexPath row];
cell.textLabel.text = [listData objectAtIndex:row];
if(indexPath.section==0)
{
switch (indexPath.row)
{
case 0:
{
switcher = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
[switcher addTarget:self action:@selector(switchAction:)
forControlEvents:UIControlEventValueChanged];
cell.accessoryView = switcher;
switcher.tag = indexPath.row;
//cell.textLabel.text=@"switcher";
}
break;
case 1:
{
slide = [[[UISlider alloc] initWithFrame:CGRectMake(0,0, 150, 15)] autorelease];
[slide addTarget:self action:@selector(slideact:)
forControlEvents:UIControlEventValueChanged];
cell.accessoryView = slide;
// slide.tag = indexPath.row;
}
break;
}
}
}
这是我的切换操作方法:
- (void)switchAction:(UISwitch*)sender
{
NSLog(@"switchAction: sender = %d, isOn %d", [sender tag], [sender isOn]);
if(sender.on)
{
[[NSUserDefaults standardUserDefaults]setObject:@"on" forKey:@"switcher"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
else
{
[[NSUserDefaults standardUserDefaults]setObject:@"off" forKey:@"switcher"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}
-(void)viewWillAppear:(BOOL)animated
{
if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"switcher"]isEqualToString:@"on"])
{
switcher.on=YES;
}
else
{
switcher.on=NO;
}
}
答案 0 :(得分:2)
那么你需要保存开关的状态。 为此,您甚至可以使用数据库或NSUserDefaults。 使用NSUserDefaults会好得多。
- (void)switchAction:(UISwitch*)sender
{
DEBUGLOG(NSLog(@"switchAction: sender = %d, isOn %d", [sender tag], [sender isOn]));
if(sender.on)
{
[[NSUserDefaults standardUserDefaults]setObject:@"on" forKey:@"switch"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
else
{
[[NSUserDefaults standardUserDefaults]setObject:@"off" forKey:@"switch"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}
然后在viewwillAppear方法中执行以下操作
-(void)viewWillAppear:(BOOL)animated
{
if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"switch"]isEqualToString:@"on"]) {
switch.Ison=YES;
}
else
{
switch.Ison=NO;
}
}
答案 1 :(得分:0)
您应该有一个值来保存开关控制状态可能会在用户首选项上。导航到此视图时,应检查此值。
Boolean status=YES; // You should read this value from User Preference for example it represent the last status set to the switch control.
[switchView setOn:status animated:NO];
有关读取和写入用户首选项的信息,请参阅以下问题: iphone-reading-and-saving-preferences
答案 2 :(得分:0)
您只需使用此方法即可开启和关闭此开关
- (void)switchAction:(UISwitch*)sender
{
DEBUGLOG(NSLog(@"switchAction: sender = %d, isOn %d", [sender tag], [sender isOn]));
if(sender.on)
{
}
else
{
}
}
如果您想将其设置为默认值,那么您只需要在应用程序中将其设置为在viewwillappear中的实现文件中或在实现后的文件顶部
switch.on=YES;