2012-10-31 127 views
2

我有一個iPhone應用程序發送電子郵件。如果「To:」地址未設置,則顯示警報(UIAlertView)。目前,我不檢查用戶點擊OK,我只是繼續我的快樂! :d如何在ViewController已經有委託時設置委託?

警覺攻確定,當我收到以下錯誤:

wait_fences:未能收到回覆:10004003

我相信這是因爲我不處理的攻絲的確定,它仍然顯示應用程序正在做其他事情時。因此,在SO和谷歌做了一些研究之後,看來我必須有這樣的:

- (void) Alert: (NSString *) title andData: (NSString *) errorMsg { 

    UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle: title 
          message: errorMsg 
          delegate:nil 
          cancelButtonTitle: @"OK" 
          otherButtonTitles: nil]; 
    [alert show]; 


    return; 

} 

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"button was pressed"); 
} 

我的問題是,我無法弄清楚如何建立委託這一點。我已經有一個委託:

@interface ReportViewController : UIViewController <UIWebViewDelegate> { 

如何設置委託所以OK按鈕的自來水進行處理,從而消除了錯誤?

+1

我會推薦真正理解委託設計模式,而不是僅僅解決這個問題。這是你理解最有用的東西之一。 https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html – rooster117

回答

4

在尖括號內,您可以提供逗號分隔的協議列表。

@interface ReportViewController : UIViewController <UIWebViewDelegate, UIAlertViewDelegate> { 

現在你可以實現兩套方法。並且不要忘記將警報視圖的代理設置爲self

+0

我編輯了我的問題以顯示相關的代碼。代表是我最薄弱的專業領域之一;因此,我不確定你指的是什麼。你能否詳細說明一下? – SpokaneDude

+0

我給你改變了@interface行。當你創建alert視圖時,將參數'self'傳遞給'delegate:'而不是'nil'。 – rmaddy

+0

知道了...謝謝你...我感謝你的時間... – SpokaneDude

1

根據代碼'delegate:nil',您的代理看起來像零。您需要將其更改爲'delegate:self'