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


16

当导航到具有表单或列表(分组)的新视图时,内容从导航视图标题的底部向下出现大约四分之一,然后大约半秒钟后“弹出”到正确的位置。非常难看。不知道这是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")
    }

}

Answers:


10

为节提供标题文本可以解决此问题,即使该文本为空白。尽管这会在导航标题和第一行之间留下空白。

适用于样式和分组形式的窗体和列表。

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}

尝试了本文中的两种解决方案,但仍在发生。还有什么可能发生?这么奇怪。
Lkabo

0

我遇到了一个问题,该问题是通过导航链接从GroupedListStyle列表中推送的。当您这样做时,SwiftUI似乎也将推送的列表视为已分组。在这种情况下,只需重置listStyle应该可以:

List { ... }.listStyle(DefaultListStyle())
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.