MonoTouch - 重用UIAlertVIew?

时间:2010-09-01 21:01:40

标签: c# iphone xamarin.ios uialertview

是否可以在可能的情况下重复使用UIAlertView的实例?

或者将它们包装在使用块中是最佳做法吗?

  • 在某种情况下,我创建了一个 (非模态)MessageBox类(只是 像WinForms或WPF)。我主要用 为方便起见。
  • 另一种情况是习俗 UIAlertView我已将其分类 有更先进的布局。我将Dismissed事件联系起来,以便在关闭时做一些工作。

这些情况中的任何一种都需要采用不同的方法吗?

2 个答案:

答案 0 :(得分:2)

我不认为在使用块中执行此操作有任何问题 - 您可能希望抽象出处理程序,以便您不会在执行相同操作的地方都有警报框委托。

然后,LoadingHUDView再次成为需要为更高级的东西编写功能的一个很好的例子......

但是无论哪种方式 - 如果你重复使用同一个对象但每次都要改变它 - 那里就没有多少东西可以获得IMO

答案 1 :(得分:2)

以下是制作UIAlertView模式的方法:

要做到这一点,你可以做的是手动运行mainloop。我没有设法直接停止主循环,所以我改为运行主循环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;
}