A következő példát ütöttem össze.
NSArray *buttons = [NSArray arrayWithObjects:@"Igen", @"Nem", nil];
UIAlertSheet* alertSheet = [[UIAlertSheet alloc] initWithTitle:@"Alert cím" buttons:buttons defaultButtonIndex:-1 delegate:self context:self];
[alertSheet setBodyText:@"Ez egy alert."];
if (button == 1){
[alertSheet presentSheetFromAboveView:tvMessage];
}else{
[alertSheet popupAlertAnimated:YES];
}
Egy tömbbe a megjelenítendő gombok nevét kell bedobálni. Itt figyeljük meg, hogy egy lezáró nil-t is hozzá kell adni. Az objektum inicializálása során megadhatjuk a címet, a gombok címeit, az alapértelmezett gomb sorszámát - -1 esetén nincs ilyen -, delegált objektumot és kontextust. Ezután egy üzenetet is megadhatunk, ami majd szépen a cím és a gombok között fog megjelenni.UIAlertSheet* alertSheet = [[UIAlertSheet alloc] initWithTitle:@"Alert cím" buttons:buttons defaultButtonIndex:-1 delegate:self context:self];
[alertSheet setBodyText:@"Ez egy alert."];
if (button == 1){
[alertSheet presentSheetFromAboveView:tvMessage];
}else{
[alertSheet popupAlertAnimated:YES];
}
Ide még egy kis magyarázat kívánkozik. A button és a tvMessage úgy kerül a képbe, hogy előzőleg egy UINavigationBar-t tettem ki és a szokásos log view-t. A navigációs sor két gombjának delegált metódusában helyeztem el a kódrészletet, így szabályozni tudtam, hogy a kétfajta megjelenítési módból melyik jelenjen meg.
Két fajta megjelenítési mód?
Az első, amikor alulról csúszik fel, a másik, amikor a képernyő közepén jelenik meg. Mindkét esetben modálisan jelenik meg, ami azt jelenti, hogy az input fókuszát nem lehet tőle elvenni.
- (void)alertSheet:(UIAlertSheet*)alertSheet buttonClicked:(int)button
{
[alertSheet dismissAnimated:YES];
}
Végül említsük meg, hogy a delegált metódusban tüntessük el a UIAlertSheet-et, animálva vagy animáció nélkül tetszés szerint.{
[alertSheet dismissAnimated:YES];
}
Sajnos a modalitás miatt nem tudtam képet készíteni, ezért is kívánok hozzá jó szórakozást.