2009-11-17 9 views
23

Sono nuovo nello sviluppo di applicazioni per iPhone. Voglio progettare una vista di avviso con 2 pulsanti: OK e Cancel. Quando l'utente tocca il pulsante OK, quindi stamperò un messaggio che dice hello. Quando toccano il pulsante Cancel, stamperò cancel.Visualizzazione avviso in iphone

Si prega di aiutare; Come faccio a fare questo?

risposta

62

Per mostrare l'avviso:

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]; 

Per rispondere a pulsante ciò che è stato sfruttato:

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

Per ulteriori informazioni, vedere la UIAlertView Class Reference e UIAlertView Delegate Protocol Reference.

+2

La risposta non dovrebbe includere anche la necessità di nel file .h? Mi rendo conto che si fa riferimento al protocollo di classe e delegato, ma è facile immaginare l'OP ignorando quella parte :( – KevinDTimm

+0

è meglio usare "buttonIndex! = AlertView.cancelButtonIndex", nel caso in cui si rimuova il pulsante Annulla in seguito e si dimentichi di cambia gli indici dei pulsanti nella chiamata del delegato – FelixLam

+0

Steve, non hai incluso 'nil' come ultimo elemento nell'elenco di altriButtonTitles! Pertanto, quando questo codice viene copiato e utilizzato, viene visualizzato un avviso in fase di compilazione e quindi si blocca durante l'esecuzione ... – h4xxr

5

Mostra l'avviso con il seguente frammento

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

Il delegato è impostato su di sé in modo che quando l'allarme è respinto nostra classe otterrà una chiamata indietro. Il delegato deve implementare il protocollo UIAlertViewDelegate.

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

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

Ecco alcuni modi di mostrare messaggi di avviso su iPhone

controllare this link for more samples and screenshots.

(progetto XCode con il codice sorgente incluso)

  • semplice foglio Azione
  • OK/Annulla Azione Foglio
  • semplice Alert

// aprire un avviso con un OK e Annulla pulsante

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]; 

In questo modo creiamo un oggetto della classe UIAlertView e impostare il titolo "Ciao mondo " e il messaggio "Questa è una vista avviso" e il titolo di tasto come OK. Per un dettaglio risposta visita this blog

+0

per favore aggiungi il modo di visualizzare l'avviso (altrimenti la tua risposta è inutile) e ti darò un +1 :) – BQuadra

0

Per l'uscita di debug si potrebbe usare (a volte capita che non è possibile utilizzare NSLog a causa di bug che appaiono solo quando un'applicazione viene avviata sul dispositivo e non da Xcode):

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

Poi, nel codice che si possa fare, per esempio:

MY_ALERT(NSStringFromCGRect(someView.frame)) 
16

dal momento che la risposta scelta è deprecato, ecco la nuova soluzione:

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]; 

Come mostrato in iOs Developer guide.

Problemi correlati