【发布时间】:2021-12-12 10:38:28
【问题描述】:
我的第一个视图有一个带有标签栏视图的 NavigationView
struct TestView: View {
var body: some View {
NavigationView {
TabTestView()
}
}
}
在标签栏中,我有两个视图,比如 TestView1 和 TestView2。
struct TabTestView: View {
var body: some View {
TabView {
TestView1()
.tabItem {
Label("Test 1", systemImage: "list.dash")
}
TestView2()
.tabItem {
Label("Test 2", systemImage: "plus")
}
}
}
}
我现在需要向 TestView1 添加一个工具栏按钮。这是我的尝试:
struct TestView1: View {
var body: some View {
Text("Hello World")
.navigationTitle("Test View 1")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button("Save") {
print("Toolbar button click")
}
}
}
}
}
虽然这会将导航标题添加到页面,但没有添加工具栏按钮,如下面的屏幕截图所示:
但是,如果我将工具栏添加到 TabTestView,如下所示,工具栏按钮会显示出来。
struct TabTestView: View {
var body: some View {
TabView {
TestView1()
.tabItem {
Label("Test 1", systemImage: "list.dash")
}
TestView2()
.tabItem {
Label("Test 2", systemImage: "plus")
}
}
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button("Save") {
print("Toolbar button click")
}
}
}
}
}
这是一个问题 - 单击按钮时要执行的代码取决于 TestView1 中的变量,将工具栏添加到 TabTestView 感觉不对,语义上工具栏“属于”TestView1。
任何想法将不胜感激。
【问题讨论】:
-
为什么不能在 TestView1 本身中添加工具栏按钮?您还没有说那里的预防措施,也没有提供该代码。请参阅:How do I ask a good question? 和 How to create a Minimal, Reproducible Example。
-
非常感谢 Yrb 的反馈 - 我已经编辑了文章以包含完整的代码以及屏幕截图。
标签: swiftui toolbar swiftui-navigationview swiftui-tabview