Почему мой пользовательский UIAlertViewDelegate приводит к сбою отладчика? - PullRequest
1 голос
/ 04 августа 2011

Делегат выглядит следующим образом:

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). Однако, когда я просто запускаю программу, она выполняется как запланировано. Это известная проблема с monotouch (я получаю исключение Objective C), или я просто пропускаю какой-то важный код, чтобы заставить это работать? Заранее спасибо!

РЕДАКТИРОВАТЬ: выход приложения -

Возникло исключение Monotouch.

Ответы [ 2 ]

4 голосов
/ 08 августа 2011

UIAlertView, вероятно, собирается. Попробуйте сделать его переменной класса.

0 голосов
/ 07 ноября 2011

У меня была такая же проблема.Оказывается, AlertView DELEGATE каким-то образом выходил за рамки.Я добавил его во временную переменную в AppDelegate (только для временного взлома), и это сработало.Я предполагаю, что установка его в качестве переменной класса, как предложил Майк (но установка делегата, а не UIAlertView) должна исправить это.

...