-1

メソッドで UISwitch を動的に変更しようとしています[self.mySwitch setOn:YES animated:YES];

コードでも状態が変化するため、メカニズムは正常に機能しますが、ビューでは状態は変化していません。そのため、UISwitch が OFF として表示され、ON として機能します。

タップするとスイッチがONになりました。そのため、コードの inCaseOff 部分を起動するには、2 回タップする必要があります。

これが十分に明確であることを願っています。

[編集]

これはあなたが尋ねたコードです

- (void)viewDidLoad
{
   [self manageTheSwitch];
}

- (void) manageTheSwitch{
    self.mySwitch = [[UISwitch alloc]init];
    if(randomObject != nil){
        [self.mySwitch setOn:YES animated:YES];
    }else{
        [self.mySwitch setOn:NO animated:YES];
    }
}
4

3 に答える 3

3

ビューに表示されているものとは異なる UISwitch をプログラムで設定しています。まったく行う必要はありません[[UISwitch alloc]init]。代わりIBOutletに、コントローラーのプロパティを介して取得する必要があります (IB のビューに接続されています)。

mySwitch を配線したと仮定すると、次の行を削除するだけです。

self.mySwitch = [[UISwitch alloc]init];
于 2012-11-06T16:53:51.383 に答える
2

問題は、ストーリーボードで作成したボタンにアクセスするのではなく、manageTheSwitch メソッドで新しいボタンをインスタンス化していることです。その割り当て初期化を削除するだけです。

于 2012-11-06T16:54:48.117 に答える
0

「選択された」プロパティ UISwitch を使用してみてください UIControl から継承します。 self.mySwitch.selected = YES;

于 2012-11-06T16:54:27.557 に答える