In un progetto su cui sto lavorando, ho dovuto scrivere un modulo helper UIAlert che visualizzava i popup qui e là nella mia app iOS. I popup sono scritti come funzioni di classe che posso semplicemente chiamare ovunque nel codice (la classe è statica e quindi tutte le funzioni).UIAlertController - Azione non eseguita se l'avviso è stato chiuso la prima volta
ora sto incontrando un bug molto strano in cui, se si elimina un avviso una volta, quindi aprirlo di nuovo, le sue azioni non funzionano più (come nel caso, il gestore di azione non si chiama). Esso funziona se si sceglie l'azione per la prima volta viene visualizzato il popup, anche se ...
Ecco il codice per il pop-up specifico per il quale si verifica questo bug (nessun altro popup sono interessati di sorta):
static func popSkipWalkthrough() {
let alert = UIAlertController(title: "Skip", message: "whatever", preferredStyle: .Alert)
alert.addAction(cancelAction)
alert.addAction(skipWalkthroughAction)
appDelegate.window!.rootViewController!.presentViewController(alert, animated: true, completion: nil)
}
il skipWalkthroughAction
è definito come segue:
static let skipWalkthroughAction = UIAlertAction(title: "Continue", style: .Default, handler: { (action: UIAlertAction!) -> Void in
appDelegate.setWindowViewTo("NavCtrl", navigateTo: false)
CallIn.Settings.didWalkthrough = true
})
E il cancelAction
è definito come:
static let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
Questo popup, in particolare, viene mostrato ogni volta che si preme il tasto 'saltare' l'ultimo passo di un walk-through ...
ho provato un paio di cavi sulla quale sia la causa di questo comportamento è, e Penso che potrebbe avere qualcosa a che fare con il popup che non è stato davvero rilasciato, ma non sono affatto sicuro a questo punto ...
Qualche idea?
Questo risolto! Grazie. Puoi anche spiegare perché hai problemi nel modo in cui l'ho scritto? C'è una soluzione migliore ? – Skwiggs
@Skwiggs, vedere la modifica. – avismara