2009-11-17 20 views
23

Jestem nowy w rozwoju aplikacji na iPhone'a. Chcę zaprojektować widok alertu za pomocą 2 przycisków: OK i Cancel. Kiedy użytkownik dotknie przycisku OK, wydrukuję komunikat o następującej treści: hello. Kiedy dotkną przycisku Cancel, wydrukuję cancel.Widok alertu w iPhonie

Proszę o pomoc; jak mam to zrobic?

Odpowiedz

62

Aby pokazać Alert:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you want to say hello?" 
               message:@"More info..." 
               delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"Say Hello",nil]; 
[alert show]; 
[alert release]; 

reagować na cokolwiek przycisk został wykorzystany:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) { 
     NSLog(@"Cancel Tapped."); 
    } 
    else if (buttonIndex == 1) { 
     NSLog(@"OK Tapped. Hello World!"); 
    } 
} 

Aby uzyskać więcej informacji, zobacz UIAlertView Class Reference i UIAlertView Delegate Protocol Reference.

+2

Czy odpowiedź nie powinna zawierać również potrzeby w pliku .h? Zdaję sobie sprawę, że odwołujesz się zarówno do protokołu klasy i delegata, ale łatwo sobie wyobrazić OP pomijając tę ​​część :( – KevinDTimm

+0

lepiej użyć "buttonIndex! = AlertView.cancelButtonIndex", na wypadek, gdyby później usunąć przycisk anulowania i zapomnieć o zmień indeksy przycisków w wywołaniu delegata – FelixLam

+0

Steve, nie włączyłeś "zero" jako końcowego elementu na liście otherButtonTitles! Dlatego kiedy ten kod jest kopiowany i używany, daje ostrzeżenie o kompilacji, a następnie zawiesza się podczas działania ... – h4xxr

5

Pokaż alert z następującym fragmencie

 
UIAlertView *alert = [[UIAlertView alloc] 
    initWithTitle:@"Make an informed choice" 
    message:nil 
    delegate:self 
    cancelButtonTitle:@"Cancel" 
    otherButtonTitles:@"OK", nil]; 
[alert show]; 

Delegat jest ustawione do siebie tak, gdy alarm jest odwołany nasza klasa dostanie wezwanie z powrotem. Delegat musi wdrożyć protokół UIAlertViewDelegate.

 
- (void)alertView:(UIAlertView *)alertView 
    clickedButtonAtIndex:(NSInteger) buttonIndex{ 

    if (buttonIndex == 1) { 
     // Do it! 
    } else { 
     // Cancel 
    } 
} 
2

Oto kilka sposobów pokazujący komunikaty alarmowe na iPhone

sprawdź this link for more samples and screenshots.

(projekt XCode z kodem źródłowym włączone)

  • Proste Sheet Action
  • OK/Anuluj arkusz działania
  • Proste Alert

// otworzyć alert z OK i odwołania Przycisk

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"UIAlertView" 
     message:@"My message" delegate:self cancelButtonTitle:@"Cancel" 
     otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 
-1
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Hello world" message:@"This is an alert view" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil]; 

W ten sposób tworzymy obiekt klasy UIAlertView i ustawić tytuł „Witam światową” i komunikat „Jest to widok alert” i tytuł jako przycisk OK. Na wizytę detal odpowiedzi this blog

+0

proszę dodać sposób wyświetlania alertu (w przeciwnym razie twoja odpowiedź jest bezużyteczna) i dam ci +1 :) – BQuadra

0

dla wyjścia debugowania można wykorzystać (czasami zdarza się, że nie można używać NSLog z powodu błędów, które pojawiają się tylko, gdy aplikacja jest uruchomiona na urządzeniu, a nie z Xcode):

#define MY_ALERT(str) [[[UIAlertView alloc] initWithTitle:@"System Alert" message:str delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show] 

Następnie w kodzie można zrobić, na przykład:

MY_ALERT(NSStringFromCGRect(someView.frame)) 
16

ponieważ wybrana odpowiedź jest przestarzała, tutaj jest nowe rozwiązanie:

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" 
           message:@"This is an alert." 
           preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 
    handler:^(UIAlertAction * action) {}]; 

[alert addAction:defaultAction]; 
[self presentViewController:alert animated:YES completion:nil]; 

Jak pokazano w iOs Developer guide.

Powiązane problemy