我在 UIPopoverController 中有一个 UISwitch,当你打开 popover VC 时,它的默认设置是 ON。我试图拥有它,以便当您将其设置为“关闭”并关闭 UIPopover 时 - 当您重新打开弹出窗口时,UISwitch 的状态保持不变。对于我的生活,我无法弄清楚这一点,我敢打赌这真的很简单。我想知道是否有人能指出我正确的方向?任何帮助将不胜感激,谢谢!
[编辑]这是我正在使用的代码:
//--NEW CODE--//
#define SWITCH_KEY_STATE @"Save UISwitch State"
- (IBAction)settingsPopover:(id)sender {
if(![pop isPopoverVisible]){
settings = [[settingsView alloc] initWithNibName:@"settingsView" bundle:nil];
settings.setDelegate = self;
pop = [[UIPopoverController alloc] initWithContentViewController:settings];
[pop setPopoverContentSize:CGSizeMake(200, 100)];
[pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
//--NEW CODE--//
popoverState = [NSUserDefaults standardUserDefaults];
self.settings.hintSwitch.on = [popoverState boolForKey:SWITCH_KEY_STATE];
[self.settings.hintSwitch addTarget:self action:@selector(onOff:) forControlEvents:UIControlEventValueChanged];
} else {
[pop dismissPopoverAnimated:YES];
}
}
这是创建弹出框的函数,它[self.settings.hintSwitch...
是在 UISwitch 上调用的弹出框(设置),当它与之交互时会运行此 void 函数:
- (void)onOff:(id)sender {
if (settings.hintSwitch.on) {
tutView.hidden = NO;
} else {
tutView.hidden = YES;
//--NEW CODE--//
popoverState = [NSUserDefaults standardUserDefaults];
[popoverState setBool:self.settings.hintSwitch.on forKey:SWITCH_KEY_STATE];
}
}
所以工作发现它只是当我关闭弹出窗口并重新打开它时,它会将 UISwitch 重置为“ON”。
[EDIT2]我已经将上面的代码编辑为我添加的内容。哪个有效!