2015-03-17 23 views
15

Nella mia app WatchKit, quando l'utente la avvia per la prima volta, vorrei presentare loro un utile messaggio di avviso che indica loro come funziona l'app, ad es. cosa fanno i pulsanti, ecc.popup WatchKit e UIAlertView/UIAlertController

C'è qualcosa di simile a UIAlertView/UIAlertController che posso chiamare in un'app WatchKit? Non sono riuscito a trovare una risposta su questo argomento, il che potrebbe significare che non è possibile.

risposta

46

(Nuovo in watchos 2,0)

WKAlertAction *act = [WKAlertAction actionWithTitle:@"OK" style:WKAlertActionStyleCancel handler:^(void){ 
     NSLog(@"ALERT YES "); 
    }]; 

NSArray *testing = @[act]; 

[self presentAlertControllerWithTitle:@"Voila" message:@"This is Watch OS 2 !" preferredStyle:WKAlertControllerStyleAlert actions:testing]; 

SWIFT

func showPopup(){ 

    let h0 = { print("ok")} 

    let action1 = WKAlertAction(title: "Approve", style: .Default, handler:h0) 
    let action2 = WKAlertAction(title: "Decline", style: .Destructive) {} 
    let action3 = WKAlertAction(title: "Cancel", style: .Cancel) {} 

    presentAlertControllerWithTitle("Voila", message: "", preferredStyle: .ActionSheet, actions: [action1, action2,action3]) 


} 
+0

chiedendosi perché non funziona quando inseriamo un solo pulsante? –

+0

funziona perfettamente per me, anche con un solo pulsante. ricordati di regolare anche l'array di azioni fornito a 'presentAlertControllerWithTitle' – oelna

2

Non esiste una classe di avvisi. Tuttavia è possibile presentare modalmente "WKInterfaceController" con le informazioni in "WKInterfaceLabel" e una "WKInterfaceButton".

+2

Sad, Apple ha appena reso la nostra vita più complicata. –

2

Purtroppo non puoi farlo. Ma puoi ovviamente avere una gerarchia modale basata su pagine con screenshot di come funziona l'app se è la prima volta che viene lanciata l'app. Lo sto facendo nella mia app! :)

+0

Puoi aggiungere codice e screenshot di come lo stai facendo modualmente nello storyboard? C'è un solo controller di visualizzazione principale nel watchkit e come puoi reindirizzare un utente in un altro posto e non mostrare più quella pagina? Non capisco. –

1

Se potessi fare un altro suggerimento: Crea un gruppo separato per il tuo "avviso" nel controller dell'interfaccia iniziale e mostralo/nascondilo secondo necessità.

+0

Non è sicuro che sia possibile, dato che non puoi sovrapporre gli elementi in modo da dover nascondere l'interfaccia utente principale e sarà molto hacky (brusco/senza animazione, ecc.). Invece, mostrare un controller modale potrebbe essere un'opzione migliore se possibile. – strangetimes

3

Sì, dopo l'aggiornamento a watchOS 2, è possibile presentare una vista di avviso utilizzando presentAlertController di WKInterfaceController.

Vedere the official documentation here.

2
let h0 = { print("h0 action")} 
    let h1 = { print("h1 action")} 

    let action1 = WKAlertAction(title: "h0 action", style: .default, handler:h0) 
    let action2 = WKAlertAction(title: "h1 action", style: .default, handler:h0) 

    self.presentAlert(withTitle: "Title", message: "a message", preferredStyle: .actionSheet, actions: [action1, action2]) 

Codice a Swift 3

0

aggiungerò le swift4 risultato che il lavoro per me durante l'utilizzo di

WKAlertAction

watchos 4.0

Swift 4

 let action1 = WKAlertAction.init(title: "Cancel", style:.cancel) { 
      print("cancel action") 
     } 

     let action2 = WKAlertAction.init(title: "default", style:.default) { 
      print("default action") 
     } 

     let action3 = WKAlertAction.init(title: "destructive", style:.destructive) { 
      print("destructive action") 
     } 

     presentAlert(withTitle: "Alert Title", message: "message is here", preferredStyle:.actionSheet, actions: [action1,action2,action3])