0

スイッチのデフォルト値に問題があります。FirstSwitchValue を UsersDefaults に追加すると、この関数が機能します。

- (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;

その後、コードはそのまま機能するはずです。

propertiesに関する Apple のドキュメントを読むことをお勧めします。

于 2013-09-04T06:53:56.063 に答える
0

プロパティを作成している場合は、次のように使用しますself.FirstSwitch

于 2013-09-04T06:28:26.480 に答える