Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何显示/隐藏带有以NSUserDefault保存值的开关的按钮_Ios_Xcode_Uibutton_Nsuserdefaults_Uiswitch - Fatal编程技术网

Ios 如何显示/隐藏带有以NSUserDefault保存值的开关的按钮

Ios 如何显示/隐藏带有以NSUserDefault保存值的开关的按钮,ios,xcode,uibutton,nsuserdefaults,uiswitch,Ios,Xcode,Uibutton,Nsuserdefaults,Uiswitch,我有ui开关命名为sosSwitchthas在NSUserDefaults键中保存值:MySwitch,我有ui按钮命名为sosBtn。 如何显示/隐藏sosBtn取决于保存在NSUserDefaults中的开关值?我需要把代码放在哪里?在viewDidLoad中?谢谢大家! 假设您已经拥有: @property (retain, nonatomic) IBOutlet UIButton *sosBtn; @property (retain, nonatomic) IBOutlet UISwit

我有ui开关命名为sosSwitchthas在NSUserDefaults键中保存值:MySwitch,我有ui按钮命名为sosBtn
如何显示/隐藏sosBtn取决于保存在NSUserDefaults中的开关值?我需要把代码放在哪里?在viewDidLoad中?谢谢大家!

假设您已经拥有:

@property (retain, nonatomic) IBOutlet UIButton *sosBtn;
@property (retain, nonatomic) IBOutlet UISwitch *sosSwich;
- (IBAction)sosSwitch:(id)sender;
试试这个:

-(void)viewDidLoad
{    
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MySwitch"])
    {
        self.sosBtn.hidden = NO;
        [self.sosSwich setOn:YES animated:YES]; 
    }
    else 
    {
        self.sosBtn.hidden = YES;
        [self.sosSwich setOn:NO animated:YES];
    }
}

- (IBAction)sosSwitch:(id)sender 
{
    UISwitch *mySosSwitch = (UISwitch *)sender;
    if (mySosSwitch.on)
    {
        self.sosBtn.hidden = NO;
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MySwitch"];  //YES means sosBtn should be visible
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    else 
    {
        self.sosBtn.hidden = YES;
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MySwitch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
}

好的,我明白。。但是,如果我的开关位于模态视图控制器和视图中的按钮中,我该如何执行相同的操作?在这种情况下,您将需要实现可选的委托方法。请查看我对此的回答,这样就有了一个委托方法回调的示例。