2015-03-17 21 views
15

In meiner WatchKit-App, wenn der Benutzer es zuerst startet, möchte ich ihnen eine hilfreiche Nachrichtenalarm präsentieren, die ihnen sagt, wie die App funktioniert, z. Was machen die Tasten, etc.WatchKit und UIAlertView/UIAlertController popup

Gibt es etwas Ähnliches wie UIAlertView/UIAlertController, das ich in einer WatchKit App aufrufen kann? Ich konnte zu diesem Thema keine Antwort finden, was sehr wohl bedeuten könnte, dass es nicht möglich ist.

Antwort

46

(neu 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

frage mich, warum es nicht funktioniert, wenn wir nur einen Knopf setzen? –

+0

funktioniert perfekt für mich, auch mit nur einem Knopf. Denken Sie daran, auch das Array actions anzupassen, das für 'presentAlertControllerWithTitle' bereitgestellt wird – oelna

2

Es gibt keine solche Klasse für Warnungen. Sie können jedoch "WKInterfaceController" mit den Informationen in "WKInterfaceLabel" und einem "WKInterfaceButton" modal darstellen.

+2

Sad, Apfel machte nur unser Leben komplizierter. –

2

Leider können Sie das nicht tun. Aber Sie können natürlich eine modale Seiten-basierte Hierarchie mit Screenshots davon haben, wie die App funktioniert, wenn sie das erste Mal gestartet wird. Ich mache das in meiner App! :)

+0

Kannst du Code und Screenshot hinzufügen, wie du das modal im Storyboard machst? Es gibt nur einen Hauptansicht-Controller in Watchkit und wie können Sie einen Benutzer an einen anderen Ort umleiten und diese Seite dann nie mehr anzeigen? Ich verstehe nicht. –

1

Wenn ich einen weiteren Vorschlag machen könnte: Erstellen Sie eine separate Gruppe für Ihre "Warnung" in Ihrem ursprünglichen Schnittstellencontroller und zeigen/verstecken Sie es nach Bedarf.

+0

Nicht sicher, dass das möglich ist, da Sie Elemente nicht überlappen können, so dass Sie die Hauptbenutzeroberfläche verstecken müssen und es wird sehr hacky sein (abrupt/keine Animation etc). Stattdessen ist es vielleicht besser, einen modalen Controller zu zeigen, wenn das möglich ist. – strangetimes

3

Ja, nach dem Upgrade auf watchOS 2 können Sie eine Alarmansicht mit presentAlertController von WKInterfaceController anzeigen.

Siehe 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]) 

-Code in Swift 3

0

i die swift4 hinzufügen führt, dass die Arbeit für mich bei der Verwendung von

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