2012-01-12 78 views
0

我的應用程序中有以下代碼。在視圖控制器上,我有兩個UIButton控件,每個都執行不同的操作。當我按下第一個按鈕時,我有一個UIAlertView來確認操作。這工作正常。我以同樣的方式設置第二個按鈕。當我按下第二個按鈕時,第一個UIAlertView短暫出現,然後出現第二個UIAlertView。它在那時可以正常工作,但是第一個UIAlertView再次出現。UIAlertview被稱爲多次

如果我完全取出UIAlertViews並更新視圖上的標籤以指示按下了哪個按鈕,我不會再獲得任何一個按鈕的調用,因此我已將此隔離爲包含UIAlertViews。

任何人都可以指向我的代碼中導致這種情況的東西?這是代碼。

- (IBAction)clearInspectionsClicked { 

    UIAlertView *alertClear = [[UIAlertView alloc] initWithTitle:@"Please Confirm" 
              message:@"Clear out all inspection data?" 
              delegate:self 
              cancelButtonTitle:@"Clear" 
              otherButtonTitles:@"Cancel", nil]; 
[alertClear show]; 

} 

- (IBAction)loadSampleDataClicked { 

    UIAlertView *alertLoad = [[UIAlertView alloc] initWithTitle:@"Please Confirm" 
                message:@"Load Sample data?" 
                delegate:self 
              cancelButtonTitle:@"Load" 
              otherButtonTitles:@"Cancel", nil]; 
    [alertLoad show]; 
} 


-(void) alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex]; 
    if ([title isEqualToString:@"Clear"]) 
    { 
     [self clearInspections]; 
     [self.StatusLabel setText:@"Inspection data has been cleared!"]; 
    } 
    if ([title isEqualToString:@"Load"]) 
    { 
     [self loadSampleData]; 
     [self.StatusLabel setText:@"Sample data has been loaded!"]; 
    } 
} 

回答

1

是否有可能你有一個按鈕連線到其中的兩個動作?可以將多個操作連接到Interface Builder中的一個給定控件,並且會導致這種確切的行爲。

+0

如果我取出UIAlertViews,而只是在視圖的標籤中顯示狀態消息,則只會調用一個動作。不過,我會通過調試器檢查確認。感謝帖子! – 2012-01-14 13:22:04

+0

就是這樣!感謝您指出了這一點。看完這些動作之後,我注意到第二個按鈕已連接到兩者。我刪除了錯誤的操作鏈接,現在它工作正常。有時候解決方案比你想象的要簡單!再次感謝! – 2012-01-14 13:36:47