当导航到具有表单或列表(分组)的新视图时,内容显示在导航视图标题底部的大约四分之一处,然后“弹出”到正确的位置(大约一半)第二秒之后。十分难看。不确定这是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")
}
}
答案 0 :(得分:1)
为节提供标题文本可解决此问题,即使该文本为空白。尽管这会在导航标题和第一行之间留出空隙。
可将样式和列表设置为分组样式。
struct TestView: View {
var body: some View {
Form {
Section(header: Text("")) {
Text("Test View")
}
}
.nvigationBarTitle("Test View")
}
}
答案 1 :(得分:0)
我遇到了一个问题,该问题是通过NavigationLink从GroupedListStyle列表中推送的。当您这样做时,SwiftUI似乎也将推送的列表视为已分组。在这种情况下,只需重置listStyle即可:
List { ... }.listStyle(DefaultListStyle())