2015-03-17 2 views
15

В моем приложении WatchKit, когда пользователь впервые запускает его, я хотел бы представить им полезное сообщение, которое сообщает им, как работает приложение, например. что делают кнопки и т. д.WatchKit и UIAlertView/UIAlertController popup

Есть ли что-то похожее на UIAlertView/UIAlertController, которое я могу вызвать в приложении WatchKit? Я не мог найти ответа на эту тему, что вполне может означать, что это невозможно.

ответ

46

(Новое в 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]; 

СВИФТ

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

интересно, почему это не работает, когда мы размещаем только одну кнопку? –

+0

отлично работает для меня, даже с одной кнопкой. просто запомните также настроить массив действий, предоставленный 'presentAlertControllerWithTitle' – oelna

2

Нет такого класса предупреждений. Однако вы можете представить «WKInterfaceController» с информацией в «WKInterfaceLabel» и «WKInterfaceButton».

+2

Сад, яблоко просто делает нашу жизнь более сложной. –

2

К сожалению, вы не можете этого сделать. Но у вас, конечно же, есть модальная иерархия на основе страниц с скриншотами о том, как приложение работает, если приложение запускается в первый раз. Я делаю это в своем приложении! :)

+0

Можете ли вы добавить код и снимок экрана о том, как вы это делаете в раскадровке? В watchkit есть только один главный контроллер вида и как вы можете перенаправить пользователя в другое место, а затем никогда не показывать эту страницу еще раз? Я не понимаю. –

1

Если бы я мог сделать еще одно предложение: Создайте отдельную группу для своего «предупреждения» в вашем начальном интерфейсном контроллере и покажите/спрячьте ее по мере необходимости.

+0

Не уверен, что это возможно, учитывая, что вы не можете перекрывать элементы, поэтому вам нужно будет скрыть главный пользовательский интерфейс, и это будет очень хаки (крутая/без анимации и т. Д.). Вместо этого отображение модального контроллера может быть лучшим вариантом, если это возможно. – strangetimes

3

Да, после обновления до watchOS 2 вы можете представить представление предупреждения, используя presentAlertController WKInterfaceController.

См. 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]) 

Код в Swift 3

0

я добавлю swift4 результат этой работы для меня в то время как с помощью

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]) 
Смежные вопросы