我创建了以下项目来演示此问题。当我推到另一个包含scrollView(本例中为List)的视图,并且定义了navigationTitle时,navigationBar会以一种不稳定的方式从LargeTitle变为inline。如果没有navigationTitle,动画将是平滑的。不知道如何解决这个问题:
import SwiftUI
import CoreData
enum Detail: Hashable {
case pushedView
}
struct ContentView: View {
@State private var selection: Detail?
@State private var columnVisibility = NavigationSplitViewVisibility.all
var body: some View {
NavigationSplitView(columnVisibility: $columnVisibility) {
List(selection: $selection) {
NavigationLink(value: Detail.pushedView) {
Text("Push View")
}
}
.listStyle(.insetGrouped)
.navigationTitle("Home")
} detail: {
switch self.selection {
case .pushedView:
PushedView()
default:
EmptyView()
}
}
.navigationSplitViewStyle(.balanced)
}
}
struct PushedView: View {
var body: some View {
List {
ForEach((1...30), id: \.self) {n in
Text("\(n)")
}
}
.navigationTitle("Pushed View")
}
}
1条答案
按热度按时间polkgigr1#
在具有不同导航栏样式的视图之间转换时,似乎会发生此问题。
我找到了一个解决方法。
下面是PushedView的更新代码:
在这里,我将List Package 在
ScrollViewReader
中以访问scrollProxy
,我们可以使用它手动滚动到第一个索引。