问题描述
我创建了一个示例 macOS 10.15 SwiftUI 应用程序,其中显示了有关所选项目的侧边栏和详细信息。根据文档,导航视图在第一个位置需要 List
,在我的情况下需要 View
,如果列表为空,则为 Text
,另一个默认 View
未选择任何项目时显示。
import SwiftUI
struct ContentView: View {
@State var selection: String?
var body: some View {
NavigationView {
SidebarView(selection: $selection)
Text("Empty List")
defaultview()
}
}
}
我的第一种方法是创建一个 @State
变量 selection
来保存当前选择,然后由 List
使用。通常我想在节中使用 ForEach
,但为了简单起见,我使用了这种方法。
struct SidebarView: View {
@State var elements = ["A","B","C"]
@Binding var selection: String?
var body: some View {
List(elements,id: \.self,selection: _selection) { element in
NavigationLink(destination: DetailView(element: element,selection: _selection),tag: element,selection: _selection,label: {
Text(element)
})
}
}
}
struct defaultview: View {
var body: some View {
Text("I am the default view")
.background(Color.orange)
.frame(maxWidth: .infinity,maxHeight: .infinity)
}
}
用于测试详细视图中的“清除功能I added a simply
按钮”,该视图在选择列表元素时显示:
struct DetailView: View {
let element: String?
@Binding var selection: String?
var body: some View {
HStack {
vstack {
Text(element ?? "None selected")
Button(action: { selection = nil }) {
Text("clear")
}
}
}
.frame(maxWidth: .infinity,maxHeight: .infinity)
}
}
需要更改什么才能使按钮点击实际上消除 NavigationLink
并再次显示 defaultview
?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)