2011-08-04 77 views
1

委託如下:爲什麼我的自定義UIAlertViewDelegate會使調試器崩潰?

public class DoneAlertViewDelegate : UIAlertViewDelegate 
{ 
    UINavigationController controller; 
    EKEventStore store; 
    EKEvent ekEvent; 
    public DoneAlertViewDelegate(UINavigationController controller, EKEventStore storeEvent, EKEvent userEvent) 
    { 
     this.controller = controller; 
     store = storeEvent; 
     ekEvent = userEvent; 

    } 
    public override void Clicked (UIAlertView alertview, int buttonIndex) 
    { 
     if(buttonIndex == 0) 
     { 
      var alert = new UIAlertView("Date Stored", "Date saved in calendar",null,"OK",null); 
      alert.Show(); 
      SaveEvent(); 
      controller.PopViewControllerAnimated(true); 
     } 
     else if(buttonIndex == 1) 
     { 
      controller.PopToRootViewController(true); 
     } 

    } 

    public override void Canceled (UIAlertView alertView) 
    { 

    } 

    public void SaveEvent() 
    { 
     var err = new NSError(); 
     store.SaveEvent(ekEvent,EKSpan.ThisEvent,out err); 
    } 
} 

這裏的問題是,當我調試,這始終崩潰調試器(SIGSEGV)錯誤被調用。但是,當我簡單地運行程序時,它按計劃執行。這是一個單點觸摸已知的問題(我得到一個Objective-C異常)還是我錯過了一些關鍵的代碼,使其工作?提前致謝!

編輯:應用程序輸出 -

Monotouch.Foundation.MonoTouchException已經拋出「Objective-C的拋出異常名稱:NSInvalidArgumentException原因: - [UITouchData alertView:clickedButtonAtIndex:]:無法識別的選擇發送到實例0xdc614e0

+1

你應該發佈你的控制檯日誌。 – picciano

+0

你有什麼MT版本? – Krumelur

回答

4

的UIAlertView中很可能得到收集。嘗試使其成爲一個類變量。

0

我有同樣的問題。原來,AlertView DELEGATE在某種程度上走出去的範圍。我把它添加到一個臨時變量在我的AppDelegate(只是作爲一個臨時黑客),它的工作。我想象像Mike建議的那樣將其設置爲一個類變量(但是設置Delegate,而不是UIAlertView)應該修復它。

相關問題