将UISwitch更改为On

时间:2012-09-26 22:21:25

标签: iphone ios uialertview uiswitch

我的.xib文件中有一个UISwitch对象。默认状态为On。如果用户将其切换为关闭,我想问他是否确定,如果他点击否 - 自动将其切换回开启。

所以我在我的.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"];
    }
}

这要求方法显示带有各种参数的Alert消息(标题,文本,取消按钮和其他按钮)。

我还注册了UIAlertViewDelegate,在我的.m文件中,我正在尝试实现clickedButtonAtIndex方法,如下所示:

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

        default:
            break;
    }
}

我收到了Alert消息,但是当我单击No按钮时没有任何反应。也不是。 那么如何将其重新打开?

4 个答案:

答案 0 :(得分:1)

确保在Interface Builder中连接了所有连接。另外,请确保警报视图中的switch语句与右键相关联(即确保进入案例0)。

要关闭开关,请参阅下面的代码。

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

// Set the switch off
[_switch SetOn:NO];

答案 1 :(得分:1)

我通常这样做,以便立即绘制:

    [emailAlertSwitch setOn:NO animated:YES];

OR

    [emailAlertSwitch setOn:YES animated:YES];

是否进入alertView委托回调?

答案 2 :(得分:1)

您需要使用setOn: animated:方法

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

简单地使用没有动画的setOn将不会显示动画。

答案 3 :(得分:1)

必须确保授权UIAlertView:

UIAlertView *displayMessage = [[UIAlertView alloc]
   initWithTitle:messageTitle
   message:alertMessage
   **delegate:self**
   cancelButtonTitle:cancelButton
   otherButtonTitles:otherButton,
nil];