我的应用程序的根目录下有一个初始状态为 .navigationViewStyle(.stack)
的NavigationView
,但在导航时,我想将该样式更改为.doubleColumn.
从我的后代的角度来看,我尝试像更改导航栏标题一样调用navigationViewStyle(.doubleColumn)
,但没有运气。
在根视图中尝试三元运算符也不起作用navigationViewStyle(isDoubleColumn ? .doubleColumn : .stack)
根视图:
var body: some View {
NavigationView {
VStack {
//stuff
}
}
.navigationViewStyle(.stack)
}
后代视图
var body: some View {
ScrollView{
//stuff
}
.navigationViewStyle(.doubleColumn) //doesn't work
}
DoubleColumnNavigationViewStyle 是一个需要初始化的结构。试试这样:
.navigationViewStyle(DoubleColumnNavigationViewStyle())
下面的代码可以完成这项工作,但代价是丢失一些状态数据,因此它可能不是真正的解决方案。
struct SwiftUIView: View {
@State var isDoubleColumn = false
var body: some View {
Group {
if isDoubleColumn{
NavigationView {
Text("Hello, World!")
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
} else {
NavigationView {
Text("Hello, World!")
}
}
}
}
}
我不是专家,但有些事情告诉我,在导航视图生命周期内无法更改样式。