2010-07-03 52 views
3

我的應用程序需要警惕味精,如果是按下按鈕然後一個更加警覺味精,然後我不得不叫method.This是我的代碼:UIAlert查看換是/否條件

-(IBAction)resetPressed:(id)sender 
{ 
    NSString *title= [NSString stringWithFormat:@"Warning"]; 
    NSString *message = [NSString stringWithFormat:@"Are you sure you want to Reset"]; 
    NSString *ok = [NSString stringWithFormat:@"No"]; 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
                message:message 
                delegate:self 
              cancelButtonTitle:ok otherButtonTitles:@"Yes",nil]; 
    [alert show]; 
    [alert release]; 
} 


- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (alertView.tag ==1) 
    { 
     NSString *title= [NSString stringWithFormat:@"Warning"]; 
     NSString *message = [NSString stringWithFormat:@"Are you sure you want to Reset"]; 
     NSString *ok = [NSString stringWithFormat:@"No"]; 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
                 message:message 
                 delegate:self 
               cancelButtonTitle:ok otherButtonTitles:@"Yes",nil]; 
     alert.tag =2; 
     [alert show]; 
     [alert release]; 

    } 
    else if(alertView.tag ==2) 
    { 
     [self resetArray]; 
    } 
} 

感謝。

+0

什麼問題? – kennytm 2010-07-03 06:17:00

+0

感謝Kenny。在這段代碼中,alert.tag == 1條件沒有得到滿足,所以msg沒有被打印。只有當2 msg是yes時,方法纔會被調用。如果你可以解決這個問題,那麼請。 謝謝 – 1988 2010-07-03 06:34:42

+0

同一位用戶可能有[UIAlert View-for yes/no condition](http://stackoverflow.com/questions/3165070/uialert-view-for-yes-no-condition)的副本。請改變問題而不是重新發布。 – vikingosegundo 2011-11-08 22:45:18

回答

0

請.h文件中在.m文件定義兩個單獨的UIAlertView中現在

@interface XYZViewController:UIViewController 
{ 
    UIAlertView *firstAlertView; 
    UIAlertView *secondAlertView; 
} 

修改如下:

-(IBAction)resetPressed:(id)sender 
{ 
    NSString *title= [NSString stringWithFormat:@"Warning"]; 
    NSString *message = [NSString stringWithFormat:@"Are you sure you want to Reset"]; 
    NSString *ok = [NSString stringWithFormat:@"No"]; 

    if(firstAlertView == nil) 
    { 
     firstAlertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:ok otherButtonTitles:@"Yes",nil]; 
    } 
    [firstAlertView show]; 

}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (alertView == firstAlertView) 
    { 
     NSString *title= [NSString stringWithFormat:@"Warning"]; 
     NSString *message = [NSString stringWithFormat:@"Are you sure you want to Reset"]; 
     NSString *ok = [NSString stringWithFormat:@"No"]; 

     if(secondAlertView == nil) 
     { 
      secondAlertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:ok otherButtonTitles:@"Yes",nil]; 
     } 
     [secondAlertView show]; 
    } 
    else if(alertView == secondAlertView) 
    { 
     [self resetArray]; 
    } 
} 

和dealloc方法請釋放分配的UIAlertviews。

希望我很清楚你。

謝謝,
吉姆。

+0

感謝Jim.But對於這兩個按鈕,它都調用了resetArray方法。 請幫幫我。 謝謝。 – 1988 2010-07-03 08:13:58

+0

你想爲兩個警報視圖調用resetArray嗎?或者你只想調用secondAlertView? – Jim 2010-07-03 10:00:27

+0

感謝您對secondAlerView的答覆。 – 1988 2010-07-06 05:21:52

1

我不知道你的目標是,但幾件事情看我錯了反正:

首先你應該創建你的字符串是這樣的:

NSString *title= @"Warning"; 

有沒有必要使用stringWithFormat你的情況。

然後,它似乎沒有正確地將第一個UIAlert的標記設置爲1,並且標記的默認值爲0,所以我猜中的if語句從來都不是真的。

此外,您應該檢查使用buttonIndex哪個按鈕被按下,否則您將顯示警報和呼叫[self resetArray]無論用戶按下哪個按鈕。

希望有所幫助。

+0

感謝Jukurpa爲你的建議它工作。我檢查了buttonIndex n問題解決。 – 1988 2010-07-06 09:25:12

+0

我注意到這個偉大的答案是不被接受的。這幾乎就是我在閱讀問題時腦海中所想的答案。無論哪種方式,我都投了票。 帕拉維,別忘了接受答案。這就是你對StackOverflow的人說「謝謝」:) – Olie 2010-07-07 15:39:51

1

在你的代碼中,你創建了第一個警報,但從來沒有真正設置它的標記。你應該這樣做:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
                message:message 
                delegate:self 
              cancelButtonTitle:ok otherButtonTitles:@"Yes",nil]; 

alert.tag = 1; //Or 2, or something. 
[alert show]; 
[alert release]; 

然後你的委託方法中的代碼將運行。