SwiftUI 视图内容布局意外弹出/跳转出现?

Syb*_*Syn 21 ios swift swiftui

当导航到带有表单或列表(分组)的新视图时,内容出现在导航视图标题底部大约四分之一处,然后大约半秒后“弹出”到正确位置。十分难看。不确定这是 SwiftUI 错误还是我的结构不正确?

我已经在模拟器和设备上进行了测试,结果相同。

我认为这与处理导航链接的方式有关?当 ContentView 出现时,每个导航链接都会在其目标视图上调用 init()。对我来说这是没有意义的,目标 init() 不应该只在用户实际点击导航链接时被调用吗?

我也用工作表试过这个问题,工作表不存在这个问题,只有在使用带有分组样式的表单或列表的导航链接时才存在。

来自全新单视图应用程序的代码:

struct ContentView: View {

    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView()) {
                Text("Test Link")
            }
        .navigationBarTitle("Content View")
        }
    }

}

struct TestView: View {

    var body: some View {
        Form {
            Text("Test View")
        }
        .navigationBarTitle("Test View")
    }

}
Run Code Online (Sandbox Code Playgroud)

Syb*_*Syn 10

提供带有标题文本的部分可以解决该问题,即使文本为空白也是如此。虽然这会在导航标题和第一行之间留下间隙。

适用于分组样式的表单和列表。

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 尝试了这篇文章中的两种解决方案,仍然发生。还有什么可能发生的事情?这么奇怪。 (2认同)