Frage

Should Instanzen UIAlertView wiederverwendet werden, wenn möglich?

Oder wird sie in einer using-Block der besten Praxis Einwickeln?

  • Für eine Situation, habe ich eine (Nicht modal) MessageBox-Klasse (nur wie WinForms oder WPF). Ich hauptsächlich verwenden es für die Bequemlichkeit.
  • ist Eine andere Situation, eine benutzerdefinierte UIAlertView, dass ich subclassed habe, dass hat erweiterte Layout. Ich Draht-up des Entlassen Veranstaltung einig Arbeit auf der Nähe zu tun.

würde entweder diese Situation Anruf für einen anderen Ansatz?

War es hilfreich?

Lösung

Ich glaube nicht, dass es irgendein Problem dies in einem mit Block tun -. Sie aus dem Handler zu abstrahieren wollen, so dass Sie Alert-Box Delegierten der ganzen Ort nicht haben, die das gleiche tun

dann wieder die LoadingHUDView ist ein gutes Beispiel, um Code benötigen, um aus der Funktionalität für anspruchsvollere Dinge ...

aber so oder so - wenn Sie das gleiche Objekt sind die Wiederverwendung aber wirklich es jedes Mal zu ändern - es; s nicht viel IMO gewonnen wird

Andere Tipps

Hier ist, wie Sie Ihre UIAlertView modal machen könnte:

Um dies zu tun, was Sie tun können, ist die mainloop manuell auszuführen. Ich habe nicht die mainloop zu stoppen direkt verwaltet, so dass ich stattdessen die mainloop 0,5 Sekunden laufen und bis der Benutzer reagiert warten.

Die folgende Funktion zeigt, wie Sie eine modale Abfrage mit dem obigen Ansatz implementieren könnten:

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top