Una delle specifiche della mia app è che quando si tocca una cella TableView, l'utente verrà reindirizzato al sito Web associato alla cella. Ecco il codice:Swift: quando si tenta di aprire un URL in Safari dalla mia app, viene visualizzato un errore quando si tenta di aprire un URL dalla mia app
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let url = NSURL(string: appdelegate.studentInfo[indexPath.row].url) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
UIApplication.sharedApplication().openURL(url)
}
else {
let alert = UIAlertController(title: "Invalid URL", message: "Cannot open URL because it is invalid.", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
}
Al mio primo tocco, l'URL si apre come previsto. Tuttavia, tornando alla applicazione da Safari e toccare un altro risultato di cellule nel seguente errore, anche se l'applicazione funziona ancora come si suppone:
snapshotting una vista che non è stato reso risultati in un snapshot vuoto. Assicurati che la tua vista sia stata renderizzata almeno una volta prima dello snapshot o dello snapshot dopo gli aggiornamenti dello schermo.
C'è un modo per evitare questo errore? O questo è un bug?
Ho sperimentato con i blocchi dispatch_async ma non ha risolto il problema.
Sto usando Objective-C e vedo questi errori quando si presenta un UIAlertController. Se faccio un [alert.view layoutIfNeeded] tutti gli avvertimenti vanno via tranne uno. In altre parole, la ripetizione di questo avviso termina ma ne vedo ancora uno nel registro. – Hahnemann
In Swift come ora non ho più alcun avvertimento, cercherò di trovare qualche volta per testarlo in Objective-C nel mio tempo libero, ti farò sapere cosa trovo – Saliom
Questa brillante risposta ha risolto il mio problema e rimosso TUTTI gli avvertimenti. Quindi immagino che Hahnemann abbia un'altra causa da qualche altra parte per il suo ultimo avvertimento. – PatrickV