0

.xibファイルにUISwitchオブジェクトがあります。その状態はデフォルトでオンです。ユーザーがそれをオフに切り替えた場合、私は彼が確かであるかどうか尋ねたいと思います、そして彼がいいえをクリックした場合-自動的にそれをオンに戻します。

したがって、これらのアウトレットとアクションを.hファイルに設定します。

@property (weak, nonatomic) IBOutlet UISwitch *campaignSwitch;
- (IBAction)checkCampaignSwitch:(id)sender;

これはcheckCampaignSwitchメソッドです。

- (IBAction)checkCampaignSwitch:(id)sender {
    if(self.campaignSwitch.isOn==FALSE)
    {
        [self allertMessage:@"Receive updates" :@"Are you sure you don't want
           to receive updates?" :@"No" :@"Yes"];
    }
}

これは、さまざまなパラメータ(タイトル、テキスト、キャンセルボタンおよびその他のボタン)を含むアラートメッセージを表示するメソッドを呼び出します。

また、UIAlertViewDelegateに登録し、.mファイルで次のようなclickedButtonAtIndexメソッドを実装しようとしています。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (buttonIndex) {
        case 0:
            [self.campaignSwitch setOn:TRUE];
            break;

        default:
            break;
    }
}

警告メッセージが表示されますが、[いいえ]ボタンをクリックしても何も起こりません。はい。では、どうすればオンに戻すことができますか?

4

4 に答える 4

1

Interface Builder ですべての接続が接続されていることを確認します。また、アラート ビューの switch ステートメントが正しいボタンに関連付けられていることを確認してください (つまり、ケース 0 になっていることを確認してください)。

スイッチをオフにするには、次のコードを参照してください。

// Set the switch on
[_switch setOn:YES];

// Set the switch off
[_switch SetOn:NO];
于 2012-09-26T22:27:34.150 に答える
1

I usually do it like this in order for it to be drawn immediately:

    [emailAlertSwitch setOn:NO animated:YES];

OR

    [emailAlertSwitch setOn:YES animated:YES];

Is it entering the alertView delegate callback?

于 2012-09-26T22:45:19.303 に答える
1

You need to use the setOn: animated: method

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

Simply using setOn without animated will not show an animation.

于 2012-09-26T22:46:08.027 に答える
1

UIAlertView が委任されていることを確認する必要がありました。

UIAlertView *displayMessage = [[UIAlertView alloc]
   initWithTitle:messageTitle
   message:alertMessage
   **delegate:self**
   cancelButtonTitle:cancelButton
   otherButtonTitles:otherButton,
nil];
于 2012-09-26T22:54:00.810 に答える