我有一个简单的用例,一个屏幕使用NavigationLink推送另一个屏幕。有一个奇怪的行为iOS 14.5测试版(1,2,3),推送屏幕在推送后立即弹出。
我设法创建了一个示例应用程序,并在其中重现它。我认为原因是@Environment(\.presentationMode)的存在似乎重新创建了视图,并导致推送的视图被弹出。
完全相同的代码在Xcode12/ iOS 14.4中运行良好
下面是一个示例代码。
import SwiftUI
public struct FirstScreen: View {
public init() {}
public var b
"A> B> A> B> A ..."
当重复从screen A切换到screen B并再次返回screen A的操作时,我们认为如果使用以下代码,由于保留了旧的屏幕信息,负载将继续累积。
但是,"NavigationLink"中包含的返回代码不会重新加载前一个屏幕,因此当前使用以下代码:
问题:
如果我想在调用旧屏幕时总是重新加载屏幕,该怎么办?
struct ContentView: View {
@State private var Flag : Bool = false
var body: some View {
我有一个简单的用例,其中一个屏幕使用由ForEach填充的List元素中的NavigationLink来推送另一个屏幕。推流后会弹出推流画面。这在iOS 14.x上工作得很好,但在iOS 15上就不行了。有没有人知道解决这个问题的办法?或任何其他解决方案如何解决这个问题? 下面是一个示例代码: List {
ForEach(dataToPopulateListFrom, id: \.id) { data in
NavigationLink(destination: SomeView()
.environ
我有一个关于在SwiftUI的NavigationView堆栈中内存管理是如何工作的问题。我有一个视图,其中声明了NavigationView和NavigationLink,NavigationLink的目标参数是my TestView。导航工作良好,但是当我从堆栈中弹出视图(f. e. up back按钮)时,deinit不在控制台中打印,TestViewModel仍然可以在内存图中找到。当不再需要TestViewModel时,如何去初始化它?
/// First view in application
struct ContentView: View {