MonoTouch - повторно использовать UIAlertVIew? - PullRequest
3 голосов
/ 02 сентября 2010

Должны ли экземпляры UIAlertView повторно использоваться, когда это возможно?

Или лучше обернуть их в блок использования?

  • Для одной ситуации я создал (немодальный) класс MessageBox (так же, как WinForms или WPF).В основном я использую его для удобства.
  • Другая ситуация - это пользовательский UIAlertView, который я разделил на подклассы, с более продвинутым макетом.Я подключил событие Отклонено, чтобы выполнить некоторую работу при закрытии.

Требуется ли в любой из этих ситуаций другой подход?

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Вот как вы можете сделать свой UIAlertView модальным:

Чтобы сделать это, вы можете запустить основной цикл вручную. Мне не удалось остановить основной цикл напрямую, поэтому я вместо этого запускаю основной цикл на 0,5 секунды и жду, пока пользователь ответит.

Следующая функция показывает, как можно реализовать модальный запрос с помощью вышеуказанного подхода:

int WaitForClick ()
{
    int clicked = -1;
    var x = new UIAlertView ("Title", "Message",  null, "Cancel", "OK", "Perhaps");
    x.Show ();
    bool done = false;
    x.Clicked += (sender, buttonArgs) => {
        Console.WriteLine ("User clicked on {0}", buttonArgs.ButtonIndex);
    clicked = buttonArgs.ButtonIndex;
    };    
    while (clicked == -1){
        NSRunLoop.Current.RunUntil (NSDate.FromTimeIntervalSinceNow (0.5));
        Console.WriteLine ("Waiting for another 0.5 seconds");
    }

    Console.WriteLine ("The user clicked {0}", clicked);
    return clicked;
}
2 голосов
/ 02 сентября 2010

Я не думаю, что есть какие-либо проблемы с выполнением этого в блоке using - вы можете абстрагироваться от обработчика, чтобы у вас не было делегатов окна оповещения повсюду, которые делают то же самое.

и снова загрузкаHUDView - хороший пример необходимости кодировать функциональность для более сложных вещей ...

но в любом случае - если вы многократно используете один и тот же объект, но действительно меняете его каждый раз, - получить не так много ИМО

...