UIAlertView в подклассе не показан - PullRequest
3 голосов
/ 08 октября 2011

Я подклассифицирую UIAlertView. Смотрите код ниже. Ничего особенного, просто установите некоторое значение bool, если отображается предупреждение, и сбросьте его, если оно было отклонено. Но предупреждение никогда не появляется на экране. Экран тускнеет и все. В выводе приложения я получаю следующее сообщение:

Requesting the window of a view (<TestApp.AlertView: 0xfad7160; baseClass = UIAlertView; frame = (0 0; 0 0); transform = [0, 0, 0, 0, 0, 0]; alpha = 0; opaque = NO; layer = (null)>) with a nil layer. This view probably hasn't received initWithFrame: or initWithCoder:.

Что это сообщение хочет мне сказать? Я звоню в базу. Что еще я могу сделать? Вот класс:

public sealed class AlertView : UIAlertView
    {
        public AlertView (string title, string message,UIAlertViewDelegate del, string cancelButtonTitle, params string[] otherButtons) : base(title, message, del, cancelButtonTitle, otherButtons)
        {
        }

        public AlertView() : base()
        {
        }

        public AlertView(NSCoder coder) : base(coder)
        {
        }

        public AlertView(IntPtr handle) : base(handle)
        {
        }


        public AlertView(NSObjectFlag t) : base(t)
        {
        }

        public override void Show ()
        {
            this.bIdleTimerWasRunning = AppDelegateBase.MainApplication.IsUIIdleTimerEnabled;
            AppDelegateBase.MainApplication.EnableUIIdleTimer(false);
            base.Show ();
        }

        private bool bIdleTimerWasRunning;

        public override void DismissWithClickedButtonIndex (int index, bool animated)
        {
            AppDelegateBase.MainApplication.EnableUIIdleTimer(this.bIdleTimerWasRunning);
            base.DismissWithClickedButtonIndex (index, animated);
        }
    }

1 Ответ

2 голосов
/ 08 октября 2011

Не уверен (мне нужно проверить это далее), но конструктор по умолчанию для вашего AlertView работает (появляется небольшое без текста, всплывающее окно без кнопок).

Из этого вы можете подделать все это с чем-то вроде:

public sealed class AlertView : UIAlertView
{
    public AlertView (string title, string message,UIAlertViewDelegate del, string cancelButtonTitle, params string[] otherButtons)
        : base ()
    {
        Title = title;
        Message = message;
        Delegate = del;
        // add buttons
        CancelButtonIndex = AddButton (cancelButtonTitle);
        foreach (string s in otherButtons)
            AddButton (s);
    }
 ...

Надеюсь, что это может разблокировать вас: -)

...