UIAlertView mit Aktivitätsanzeige |
|
|
|
Geschrieben von: Philipp
|
MONDAY, 12 APRIL 2010 23:01 |
Manchmal möchte man den Benutzer darauf hinweise, das derzeit etwas passiert und in dieser Zeit der Benutzer keinerlei Einfluß auf den Ablauf der Applikation hat.
Das iPhone SDK bietet als Aktivitätsanzeige das sich drehene Rädchen, welches man beliebig positionieren kann. Benutzereingaben können jedoch meist torzdem erfolgen. Nutzt man nun die Möglichkeit einer UIAlertView, hat man einen modalen Dialog, d.h. der Hintergrund wird abgedunckelt und kann vom Benutzer nicht mehr angetippt werden.
Diese beiden Komponenten, UIActivityIndicatorView und UIAlertView werden im folgenden Beispiel kombiniert:
- (void) closeAlertView
{
// alertView schließen und Speicher frei geben
[myAlertView dismissWithClickedButtonIndex:0 animated:NO];
}
- (void) action: (UIBarButtonItem *) item
{
// eine AlertView ohne Schaltflächen
myAlertView = [[[UIAlertView alloc] initWithTitle:@"Bitte warten"
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles: nil] autorelease];
[myAlertView show];
// Erstellt die Aktivitätsanzeige und fügt sie hinzu
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:
UIActivityIndicatorViewStyleWhiteLarge];
// zentriert positionieren
activityView.center = CGPointMake(myAlertView.bounds.size.width / 2.0f,
myAlertView.bounds.size.height - 40.0f);
[activityView startAnimating];
// zur AlertView hinzufügen
[myAlertView addSubview:activityView];
[activityView release];
// Entfernt die Schaltfläche automatisch nach fünf Sekunden
[self performSelector:@selector(closeAlertView) withObject:nil afterDelay:5.0f];
}
Die AlertView wird ohne Schaltflächen erstellt und schließt sich in diesem Fall nach 5 Sekunden automatisch wieder. Da es sich bei UIAlertView um eine vererbte Klasse von UIView handelt, könnt Ihr also auch alle UIView Methoden auf die AlertView anwenden und somit auch addSubview:. Beachtet, das die AlertView mit autorelease erstellt wurde und dementsprechen nicht wieder freigegeben werden muss.
|
LAST_UPDATED2 |