Eine der Spezifikationen meiner App ist, dass beim Tippen auf eine TableView-Zelle der Benutzer umgeleitet wird auf die mit der Zelle verbundene Website. Hier ist der Code:Swift: Getting 'Snapshot eine Ansicht, die nicht gerendert ..' Fehler beim Versuch, eine URL in Safari aus meiner App zu öffnen
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)
}
}
Bei meinem ersten Tippen öffnet sich die URL wie es soll. Um jedoch die App von Safari zurückkehren und eine andere Zelle führt zu der folgenden Fehler zu berühren, obwohl nach wie vor die App funktioniert wie es soll:
Snapshot-Erstellung eine Ansicht, die nicht zu einer leeren Schnappschuss gemacht hat. Stellen Sie sicher, dass Ihre Ansicht mindestens einmal gerendert wurde, bevor Sie nach Bildschirmaktualisierungen eine Momentaufnahme oder einen Snapshot erstellen.
Gibt es eine Möglichkeit, diesen Fehler zu vermeiden? Oder ist das ein Fehler?
Ich habe mit dispatch_async Blöcken experimentiert, aber es hat das Problem nicht gelöst.
Ich benutze Objective-C und ich sehe diese Fehler bei der Präsentation eines UIAlertController. Wenn ich eine [alert.view layoutIfNeeded] mache, verschwinden alle Warnungen bis auf eine. Mit anderen Worten, die Wiederholung dieser Warnung endet, aber ich sehe immer noch eine im Protokoll. – Hahnemann
In Swift ab jetzt habe ich keine Warnungen mehr, ich werde versuchen, einige Male zu finden, um es in Objective-C in meiner Freizeit zu testen, ich werde Sie wissen lassen, was ich finde – Saliom
Diese brillante Antwort gelöst meine Problem und löschte ALLE Warnungen. Ich nehme an, Hahnemann hat woanders eine andere Ursache für seine letzte Warnung. – PatrickV