我的交换机的默认值有问题。我向UsersDefaults添加了一个FirstSwitchValue,并且此函数有效:

- (void)viewDidLoad
{
 [super viewDidLoad];

 if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstSwitchValue"]) {
   NSLog(@"Exists");
 }
 else {
   NSLog(@"Not Exists");
 }
}


我的开关如下所示:

- (IBAction)FirstSwitch:(id)sender {

 UISwitch *FirstSwitch = (UISwitch *)sender;
 // saving data
 if (FirstSwitch.on == YES) {
   [self setParamWithName:@"tag" withValue:@"1"];
 }
 else {
   [self setParamWithName:@"tag" withValue:@"0"];
 }
}


如果我加

[FirstSwitch setOn:YES animated:YES];


viewDidLoad方法中,我收到使用未声明的标识符FirstSwitch的错误消息。在添加如下声明之后:

@property (weak, nonatomic) IBOutlet UISwitch *FirstSwitch;


我的FirstSwitch停止工作了。谁能帮我?

最佳答案

您尚未手动合成属性。您有3种选择:

1:使用自动合成的名称:_FirstSwitch。然后,您可以使用以下命令:

[_FirstSwitch setOn:YES animated:YES];


2:调用getter函数。您可以使用以下任一方法:

[self.FirstSwitch setOn:YES animated:YES];


要么

[[self FirstSwitch] setOn:YES animated:YES];


3:自己合成属性。首先创建一个实例变量:

//something.h
@interface somethingClass : UIViewController {
    UISwitch *FirstSwitch;
}
@property (weak, nonatomic) IBOutlet UISwitch *FirstSwitch;


然后将其合成到您的.m文件中

//something.m
@synthesize FirstSwitch = _FirstSwitch;


之后,您的代码应该可以正常工作。

我建议您阅读有关properties的Apple文档。

07-26 08:51