2014-08-29 98 views
-1

我試圖讓下面的工作,這個例子出現在一些網站上,但我似乎無法得到它的工作。爲什麼下面的UIAlertView代碼不能正常工作

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Yes, like this" message:@"What are you looking at?" cancelButtonTitle:@"Leave me alone" otherButtonTitles:@"Button 1",@"Button 2",nil]; 
    [alert showWithDismissHandler:^(NSInteger selectedIndex, BOOL didCancel) { 
     if (didCancel) { 
      NSLog(@"User cancelled"); 
      return; 
     } 
     switch (selectedIndex) { 
      case 1: 
       NSLog(@"1 selected"); 
       break; 
      case 2: 
       NSLog(@"2 selected"); 
       break; 
      default: 
       break; 
     } 
    }]; 

我得到的警告是

爲 'UIAlertView中' 不可見@interface聲明選擇 'initWithTitle:消息:cancelButtonTitle:otherButtonTitles:'

爲「UIAlertView中無可見@interface '宣佈選擇'showWithDismissHandler:'

適當的一個非常愚蠢的問題,但我錯過了什麼。

謝謝

回答

4

簽名不正確。你錯過了代表。

– initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles: 

標準UIAlertView沒有showWithDismissHandler方法。如果您從互聯網上覆制了一些代碼,可能需要下載一些支持UIAlertView的回調的第三方軟件包(其中不乏其中的一些)。

1

是的,彼得是對的!第一個警告是因爲簽名是不正確的:

– initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles: 

,你想在這裏做的是當alertview is dismissedmethod您使用is not available做一些事情。執行UIAlertViewDelegate,然後使用這些方法中的任何一種來做你正在嘗試做的事情。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex 

這裏的鏈接到UIAlertView中代表參考:

http://developer.apple.com/library/ios/documentation/uikit/reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

0

你使用類似UBAlertView,通過任何機會呢?如果是這樣,你需要實例化一個UBAlertView,而不是一個UIAlertView

UBAlertView *alert = [[UBAlertView alloc] initWithTitle:@"Yes, like this" 
               message:@"What are you looking at?" 
             cancelButtonTitle:@"Leave me alone" 
             otherButtonTitles:@"Button 1",@"Button 2",nil]; 
[alert showWithDismissHandler:^(NSInteger selectedIndex, BOOL didCancel) { 
    ... etc ... 

(我喜歡把換行符長期方法調用,使其更具可讀性)

相關問題