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

我通常这样做是为了立即绘制它:

    [emailAlertSwitch setOn:NO animated:YES];

或者

    [emailAlertSwitch setOn:YES animated:YES];

是否进入alertView委托回调?

于 2012-09-26T22:45:19.303 回答
1

您需要使用该setOn: animated:方法

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

简单地使用不带动画的 setOn 不会显示动画。

于 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 回答