2014-07-14 16 views
11

Sto creando un allarme nel modo seguente:avvertimento UIAlertView quando respinge

let alert = UIAlertView(title: "Network Unavailable", 
         message: "Oh noes!", 
        delegate: nil, 
      cancelButtonTitle: "OK") 
alert.show() 

funziona bene. Tuttavia quando si fa clic sul pulsante 'OK' per chiudere l'avviso, ottengo questo:

Attenzione: Tentativo di respingere dalla vista del regolatore < _UIAlertShimPresentingViewController: 0x16ea2230> mentre una presentazione o respingere è in corso!

Alcuni contesto:

  1. L'allarme viene creato in didMoveToView (vista:! SKView) funzione di uno SKScene.
  2. Questo è in Xcode 6 beta 3.
  3. mio esempio è rapido, ma questo accade anche da Objective-C

Tutte le idee perché questo avvertimento potrebbe essere in corso? Non voglio ignorarlo nel caso in cui si trasformi in un errore fatale in una versione futura di iOS.

UPDATE

Dovrei anche aggiungere che, quando appare l'avviso, quando seleziono Debug -> Visualizza Debug -> Capture View gerarchia, l'avviso non viene visualizzato nella vista 3D dei punti di vista. Mi chiedo se questo sia sintomatico di qualcosa che sto sbagliando.

+2

Perché ** ovviamente ** in Swift ?! Personalmente ritengo che Swift sia uno dei linguaggi più confusi, irritanti e mal progettati che abbia mai letto ... Ciononostante, ho lo stesso problema e penso che questo possa ancora essere un bug! Siamo ancora in beta! –

+0

@Julian - "ovviamente in swift" perché l'esempio di codice è veloce non perché il bug si manifesta solo in Swift. OP è ovviamente preoccupato per il suo rapido bug. –

+1

Hai provato queste soluzioni: http://stackoverflow.com/questions/14907518/modal-view-controllers-how-to-display-and-dismiss –

risposta

5

mi è stato sempre lo stesso avviso:

Attenzione: Tentativo di respingere dal controller della vista < _UIAlertShimPresentingViewController:> mentre una presentazione o respingere è in corso!

In iOS8, UIAlertController sostituisce UIAlertView. Questo dovrebbe risolvere il vostro avviso (in objc):

UIAlertController *alert = 
    [UIAlertController alertControllerWithTitle:@"Network Unavailable" 
             message:@"Oh noes!" 
           preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction *cancelAction = 
    [UIAlertAction actionWithTitle:@"Ok" 
          style:UIAlertActionStyleCancel 
         handler:^(UIAlertAction *action) { 
                 }]; 
[alert addAction:cancelAction];  
[self presentViewController:alert animated:YES completion:nil]; 

Vedere la documentation for UIAlertController per maggiori informazioni.

+0

Perfetto! Questo ha fatto il trucco. Grazie. – Pinxaton