0

我的开关的默认值有一些问题。我向 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停止工作了。谁能帮我?

4

3 回答 3

2

您尚未手动合成您的属性。您有 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;

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

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

于 2013-09-04T06:53:56.063 回答
0
  • 首先,给你的对象起正确的名字,firstSwitch。
  • 其次,如果你想使用你的属性,像 [self.firstSwitch do something] 一样使用它。

希望它可以帮助你。

于 2013-09-04T06:36:37.290 回答
0

如果您有 make 属性,则用作self.FirstSwitch

于 2013-09-04T06:28:26.480 回答