2011-08-04 51 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)应该修复它。

相关问题