2012-09-26 96 views
0

我在我的.xib文件UISwitch對象。其狀態默認爲On。如果用戶將其切換到關閉狀態,我想問他是否確定,並且他是否點擊否 - 自動將其切換回開。更改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; 
    } 
} 

我收到提示信息,但是當我點擊了什麼都沒有發生按鈕。也不是。 那麼如何重新開啓它?

回答

1

必須確保在UIAlertView中被委派:

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

請確保您有連接在Interface Builder中的所有連接。此外,請確保您的警報視圖中的switch語句與正確的按鈕關聯(即確保您的情況爲0)。

要打開一個開關斷開,請參見下面的代碼。

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

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

Ahmmm ......我認爲他們是連接......究竟如何確定的呢?是的,我使用的是clickedButtonAtIndex方法中的代碼,但它不起作用,不會切換回On。 – Igal

+0

其實YES和NO真假做同樣的事情,它可能是你沒有連接你的行動和你的交換機與控制器的的.xib文件。 Rick點擊開關並確保其插座已經安裝好。 – 8vius

+0

我發現我的錯誤 - 我沒有委託UIAlertView。一旦我將其設置爲委託:自我 - 一切工作都很好!非常感謝你們!欣賞它! – Igal

1

我通常不喜歡這樣,以便它立即得出:

[emailAlertSwitch setOn:NO animated:YES]; 

OR

[emailAlertSwitch setOn:YES animated:YES]; 

是它進入alertView委託回調?

1

您需要使用setOn: animated:方法

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

只需用塞頓沒有動畫將不會顯示動畫。