by Degree Admin

iPhone Utvikling UIAlertView

UIAlertView er en nyttig funksjon som er vanlig å bruke i iPhone applikasjoner. Det brukes til å vise en “popup” boks for å gi brukeren ulike valg. I denne artikelen skal jeg vise hvordan man bruker dette for å lage en logg-ut dialog med brukeren. Jeg skal også gi et eksempel på en alert med et input text område.

- (IBAction) quitApp
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Sign Out"
message:@"Do you wish to sign out?"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles: @"OK" ,nil];

[alert show];
[alert release];

}

I eksempelet ovenfor vil brukeren få presentert en alert som inneholder to knapper, samt et spørsmål om å logge ut av applikasjonen.

- (IBAction) alertTextbox
{
UIAlertView *dialog = [[[UIAlertView alloc] init] retain];
[dialog setDelegate:self];
[dialog setTitle:@"Enter Text"];
[dialog setMessage:@"Enter Text"];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"OK"];

nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
[nameField setBackgroundColor:[UIColor whiteColor]];
[dialog addSubview:nameField];
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 0.0);
[dialog setTransform: moveUp];
[dialog show];
[dialog release];
[nameField release];

}

Dette eksepelet gir brukeren en alert som inneholder en tekstboks og to knapper. Her kan brukeren skrive inn en verdi i tekstboksen som kan hentes og benyttes i applikasjonen.

Nedenfor er et kodeeksempel som benyttes på knappene i uialertview.

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)index
{
if (index == 0)
{

}
else if (index == 1)
{
//handle textfield text
}
}

Et tips for å få bruke flere UIAlertViews på ett UIView er å definere hver alert med en egen tag. Definer hver ID slik:

#define kAlertViewOne 1;
#define kAlertViewTwo 2;

Deretter knytter man den ønskelige ID’en til den ønskelige alert’en slik:

alertname.tag = kAlertviewOne;

Da kan man enkelt identifisere hvilken UIAlertView som brukes med en enkel if setning:

if (alertView.tag == kAlertView){
}