2014-11-16 16 views
13

Desidero aggiungere un pulsante di annullamento separato al mio UIAlert.Pulsante Annulla in UIAlertController con UIAlertControllerStyle.ActionSheet

So come farlo con UIActionSheet ma dovrebbe anche essere possibile con UIAlert, giusto?

var sheet: UIActionSheet = UIActionSheet(); 
    let title: String = "..."; 
    sheet.title = title; 
    sheet.delegate = self; 
    sheet.addButtonWithTitle("Cancel"); 
    sheet.addButtonWithTitle("...") 
    sheet.cancelButtonIndex = 0; 
    sheet.showInView(self.view); 

Questo avrà un pulsante ... e un pulsante di annullamento che è separato.

Quindi qualcuno sa come fare questo con

var alert = UIAlertController(title: "...", message: "....", preferredStyle: UIAlertControllerStyle.ActionSheet) 

?

Sono nuovo di Xcode e veloce quindi scusate se questa domanda è stupida o niente ...

risposta

27

sua davvero semplice, ma funziona un po 'diversamente da come hanno usato per lavorare. Ora aggiungi "azioni" ai tuoi avvisi. Queste azioni sono quindi rappresentate dai pulsanti sul dispositivo.

alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)) 

sopra è il codice necessario per un semplice pulsante annullare - tenere a mente che il licenziamento della segnalazione avviene automaticamente in modo da non mettere che nel vostro gestore. Se si desidera creare poi un altro pulsante che fa qualcosa, utilizzare il codice qui sotto:

alert.addAction(UIAlertAction(title: "Button", style: UIAlertActionStyle.Default, handler: { action in 
     println("This button now calls anything inside here!") 
    })) 

Spero di aver capito la tua domanda e questo risponde quello che stavi chiedendo. Vorrei anche aggiungere che dopo aver aggiunto tutte le "azioni", l'utente è in allarme usando il codice seguente:

self.presentViewController(alert, animated: true, completion: nil) 

Spero che questo aiuti!

+0

Mentre questo funziona, non risponde alla parte della sua domanda sull'aggiunta di un separato per il pulsante Annulla, come fa UIActionSheet. UIAlertController non aggiunge un separatore prima del pulsante Annulla come UIActionSheet. – jjxtra

+0

@PsychoDad hai perfettamente ragione! - Devo aver frainteso la domanda quando ho risposto per la prima volta. Non conosco un modo per creare un separatore senza scrivere un UIAlert personalizzato, quindi non sarei in grado di modificare questa domanda temo. –

+0

Se si aggiunge un'azione con lo stile impostato su UIAlertActionStyle.Cancel, il separatore viene aggiunto automaticamente. –

1

Questa potrebbe essere la risposta peggiore codificata avrebbe visto, ma ero in grado di soddisfare i requisiti per provare questo:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert]; 
UILabel *alertLine = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, alertController.view.frame.size.width, 2)]; 
alertLine.backgroundColor=[UIColor blackColor]; 
[alertController.view.preferredFocusedView addSubview:alertLine]; 
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; 
[alertController addAction:ok]; 
[self.navigationController presentViewController:alertController animated:YES completion:nil]; 
+2

Il problema qui è che la domanda è contrassegnata "swift", non "objective-c". :) – Moritz

2

volevo andare avanti e fornire una risposta specifica per una domanda specifica. L'utente ha chiesto l'implementazione di un pulsante "annulla", non un pulsante predefinito. Dai un'occhiata alla risposta qui sotto!

let alertController = UIAlertController(title: "Select one", message: "Hey! Press a button", preferredStyle: .actionSheet) 

let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 

alertController.addAction(cancelAction) 

self.present(alertController, animated: true, completion: nil) 
Problemi correlati