Swift: Immer " Snapshots eine Ansicht, die noch nicht erbracht wurde..' Fehler beim öffnen eine URL im safari aus meine app
Einer der Spezifikationen meiner app ist, die auf die Erschließung einer tableView-Zelle, wird der Benutzer weitergeleitet auf die website der Zelle zugeordnet ist. Hier ist der code:
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)
}
}
Auf meinem ersten Tippen auf die URL öffnet sich wie es soll. Aber zurück zur app von Safari und berühren eine andere Zelle Ergebnisse in die folgende Fehlermeldung, obwohl die app noch funktioniert wie es soll:
Snapshots eine Ansicht, die noch nicht erbracht wurde, Ergebnisse in einem leeren
snapshot. Sicher, dass die view gerendert wurde mindestens einmal, bevor
Snapshots oder Schnappschuss nach Bildschirm-updates.
Gibt es eine Möglichkeit, diesen Fehler zu vermeiden? Oder ist das ein bug?
Habe ich experimentierte mit dispatch_async Blöcken, aber es hat das problem nicht lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es vielleicht nicht das gleiche problem wie ich, aber ich löste die gleiche Warnung in meinen logs.
Zeige ich ein
UIAlertController
als ein actionSheet popover auf einem iPad, und ich hatte genau die gleiche Warnung 8 mal in Folge, jedes mal, wenn ich versuchte zu zeigen, der Alarm-controller.Um die Warnung verschwinden alle die ich tun musste, war zu layout alert controller-Ansicht, wie im folgenden code:
Ich hoffe das hilft dir oder einer anderen person mit der gleichen Warnung.
Auch mit Objective-C, mit den vorgeschlagenen
[modeAlert.view layoutIfNeeded]
reduziert Fehler auf ein wie oben. Letzte Fehler wurde unterdrückt, durch die änderung im letzten addAction vonUIAlertActionStyleCancel
zuUIAlertActionStyleDefault
als unten. Nicht eine große Lösung für das, was scheint ein Fehler zu sein.Ich denke, die Letzte Warnung kam von der Schaltfläche Abbrechen.
Auf iOS8 die Schaltfläche Abbrechen wird nur angezeigt, wenn Sie benötigt wird. Wenn Sie die app laufen auf dem iPhone sichtbar ist. Wenn Sie die app auf dem iPad die Schaltfläche Abbrechen nicht angezeigt wird und die Prozedur für den Abbruch der Aktion (Stil:UIAlertActionStyleCancel) wird aufgerufen, wenn der Benutzer tippt außerhalb des popup.
die Antwort kommen: amalicka Antwort
Zu vermeiden, kopieren/einfügen von Saliom Antwort Sie können solche Unterklasse und verwenden Sie es anstelle von
UIAlertController
:Ich bin das auslösen einer
UIAlertControllerStyleActionSheet
UIAlertController
nachdem der Benutzer auf einenUITableViewRowAction
, und ich bekam die gleiche Fehlermeldung wiederholt 8-mal nach Vorlage desUIAlertController
.Auf dem iPad Pro Simulator für iOS 9.3, versuchte ich Saliom Antwort, und ich ging von acht log-Meldungen zu einem.
Als anorskdev vorgeschlagen, ich habe mein Aufruf
-[UIView layoutIfNeeded]
nach meinem-[UIViewController presentViewController:animated:completion:]
nennen, und alle Warnungen verschwunden:Beachten Sie, dass es war nicht notwendig zu verwenden Patrick ' s Lösung mit
UIAlertActionStyleDefault
fürcancelAlertAction
oder nurider Lösung der Beseitigung es insgesamt auf iPads.War ich immer eine ähnliche debug-Warnung, wenn Sie versuchen zu präsentieren QLPreviewController Modal. Ich habe gelesen auf anderen stellen, dass es ein Xcode-bug.
Mir der Fehler angezeigt, wenn ich lief meine app auf dem simulator, aber nicht auf einem tatsächlichen Gerät. Muss ein Xcode/Simulator Problem. Hoffe, das hilft.
Ich Stand vor dem ähnlichen problem (gleiche Warnung XD).
Meine Xcode version ist 9.4.1, und alles war perfekt, bis ich hinzufügen
resignFirstResponder()
imtextFieldShouldReturn(_ textField: UITextField)
.Hier war meine situation:
Wenn ich Sie berührte
UITextField
mit text in derUITableViewCell
wird, zeigt Es die Warnung.Also änderte ich die Art und Weise auslösen
UITextField
(Edit version). Es nie zeigen Sie die Warnung wieder.Abschließend, ich weiß immer noch nicht, warum das passiert ist, aber was ich tun kann, ist zu vermeiden, die Warnung, hoffe Es hilft jemanden 😀
Bearbeiteten code:
Original-code:
Ich hatte das gleiche problem und fand eine einfache Lösung, die Sinn macht.
Wenn es ein iPad (
[UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad
) dann Mach NICHT fügen Sie dieUIAlertAction
mit StilUIAlertActionStyleCancel
zu denUIAlertController
.Ich diese änderung vorgenommen und meine Fehler ging Weg. Diese Lösung macht Sinn, da brauchen Sie nicht einen Abbruch der Aktion für Warnungen mit Stil
UIAlertControllerStyleActionSheet
auf einem iPad.