我在UIPopoverController中有一个UISwitch,当你打开popover VC时它的默认设置为ON。我试图让它当你将它设置为“OFF”并关闭UIPopover时 - 当你重新打开popover时,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] 我已将上面的代码编辑为我添加的内容。哪个有效!
答案 0 :(得分:1)
我看到的第一件事就是这行代码:
pop = [[UIPopoverController alloc] initWithContentViewController:settings];
有了它,你每次控制器都会重新分配,用初始设置初始化它(默认为ON)。
你有这个解决方案:
现在就让我吧!