父级和子级列表视图之间的SwiftUI导航会导致设备上的额外刷新,但不会在Simulator中

时间:2020-04-13 12:45:44

标签: ios swift swiftui

我有一个SwiftUI应用程序,该应用程序具有一个带有导航视图的父视图和一个包含多个项目的列表。单击列表中的任何一项时,应用程序将导航到“子视图”,该子视图也具有包含某些项的简单列表。

问题是,在模拟器中一切正常,导航流畅且清晰,但是当我在手机上运行代码时,加载子视图时可见刷新,刷新非常细微但仍然可见,您可以实际看到最顶部的列表项分隔符出现,并且列表微动。

即使使用下面的简单代码,我也能够重现此内容。

import SwiftUI

struct ContentView: View {
    var numbers = ["1","2","3"]

    var body: some View {
        NavigationView {
            List(self.numbers, id: \.self) { number in
                NavigationLink(destination: ChildView()) {
                    Text(number)
                }
            }
            .navigationBarTitle(Text("Parent"))
        }
    }
}

struct ChildView: View {
    var numbers = ["1","2","3","4","5","6","7","8"]

    var body: some View {
        List(self.numbers, id: \.self) { number in
          Text(number)
        }
        .navigationBarTitle(Text("Child"))
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

这是在iPhone上运行时上面代码的屏幕录像。请注意子列表视图以及它如何微动,过渡期间甚至没有第一个列表项分隔符,它在刷新后出现。

我该如何解决?上面的代码似乎也很简单,所以我不明白我在做什么错。

谢谢您的帮助。

SwiftUI Navigation refresh issue

0 个答案:

没有答案