Ich habe eine Standardliste mit nur einem Text und auf der rechten Seite den Pfeil zur Navigation. Aber nachdem die Liste geladen und auf dem Bildschirm angezeigt wurde, fügt die Liste die Zellen hinzu, von denen ich denke, dass sie links und rechts Auffüllungen hinzufügen. Aber das sieht nicht gut aus, also sieht es so aus, als ob die Liste hinterherhinkt!
List {
ForEach(0..<book.chapters) { index in
NavigationLink(destination: ReadingView(book: self.book, chapter: index)){
Text("Kapitel \(index + 1)")
}
}
}
.navigationBarTitle(Text(book.long_name), displayMode: .inline)
Antworten:
Ich habe das gleiche Problem, aber nur auf dem Simulator. Wenn ich die App auf einem beliebigen Telefon ausführe, egal wie alt, funktioniert sie einwandfrei, wie man es erwarten würde. Das solltest du versuchen.
Edit: ah jetzt sehe ich die mobilen Daten, du bist auf deinem Handy. In diesem Fall können Sie einen Fehlerbericht an Apple senden und warten und immer die neueste Software verwenden.
quelle
Es gibt eine mögliche Lösung dafür, die andere Komplikationen hervorruft: Animationen. Dieser seltsame Fehler ist von Animationen betroffen. Geben Sie ihm einfach eine Animation wie
Macht den Fehler zumindest unsichtbar, aber seien Sie gewarnt, dass alle Unteransichten diese Animation erben, sodass Sie sie manuell erneut überschreiben müssen. Wenn Sie eine professionelle App schreiben, verwenden Sie lieber den TableView-Fix aus der Antwort von Repose.
Seltsame Sache: Wir haben herausgefunden, dass es auf iPhone XR und 11 (Simulator und reales Gerät) passiert, aber nicht auf iPhone 11 Pro, also möglicherweise nur auf LCD-Geräten ???
Ich hoffe, dies hilft zukünftigen Besuchern dieses Threads, die über diesen Thread stolpern, wie ich es getan habe, als ich diesen Fehler erlebt habe
quelle
Ich habe eine Problemumgehung gefunden, um dieses Problem zu beheben. Eine Einschränkung: Während die Verschiebung in der Tabelle behoben wird, wird die Animation des Titels der Navigationsleiste verzögert, sodass Sie gewarnt werden.
Sie können den TableViewController von UIKit in der Zwischenzeit verwenden, bis Apple das ListUI-Objekt von SwiftUI repariert.
Zusammenfassend müssen Sie einen TableViewController erstellen und in UIViewControllerRepresentable einschließen, um ihn dann in Ihre SwiftUI-Ansicht einzufügen. Die Navigationsaktion erfolgt am besten über die delegate-Methode didSelectRowAt.
Update: Anscheinend wurde das Problem im neuesten XCode 11.4 behoben (es sind jedoch jetzt mehr Probleme in der Simulatorumgebung vorhanden).
Ich habe hier einen vollständigen Code: https://gist.github.com/Rep0se/97d7a97cfd05f42aa597904e6a2cfd3d
quelle