【发布时间】:2021-10-21 14:41:40
【问题描述】:
我正在开发一个两窗格的 SwiftUI 应用程序,在 DoubleColumnNavigationView 中带有侧边栏和详细信息窗格。
我想从侧边栏的工具栏中打开一个NavigationLink 到详细信息窗格中,如下图 gif 中的“从侧边栏打开”所示)。
但是,视图以堆栈的形式打开,如下图 gif 中的“从工具栏打开”所示。
使用isDetailLink(true) 似乎没有效果。
struct ContentView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: Text("Opened from sidebar")) {
Text("Open from sidebar")
}
}.listStyle(SidebarListStyle())
.navigationTitle("Sidebar")
.toolbar {
ToolbarItem {
// This should open in detail pane
NavigationLink(destination: Text("Opened from toolbar")) {
Text("Open from toolbar")
}
}
}
Text("Detail pane")
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
【问题讨论】:
-
将链接放入列表中。隐藏它并使用 isActive @State 将其切换为活动状态
-
@loremipsum 我还没有找到隐藏
List行的简单方法。使用if语句意味着每次切换时都需要重新加载目标。 -
不是
if只是.hidden()并在初始化程序中使用NavigationLink和isActive。然后你只需切换@State -
.hidden()隐藏行内容,而不是行本身。无论如何,Denis's answer using.background()完美运行!
标签: swift swiftui navigationview swiftui-navigationlink swiftui-navigationview