【发布时间】:2021-12-05 14:21:52
【问题描述】:
我是一个新手,使用 XCode 13.0 创建一个需要设置视图的非常基本的应用程序。我想在点击标签时导航到设置视图。为此,将 NavigationView 与 NavigationLink 结合使用似乎是明智之举。
不幸的是,我遇到了格式问题,导致设置标签(齿轮图标)所在的 HStack 混乱,如下所示:
这就是我想要的,下面代码的结果:
HStack(spacing: 25) {
... other labels
Label ("", systemImage: "gear")
.foregroundColor(.gray)
.font(.title)
.onTapGesture(perform: {
// Set a state variable that triggers an extension
// that brings up the SettingsView
})
}
这就是 NavigationView 封装齿轮图标标签时发生的情况。注意它周围的垂直和水平空白。
HStack(spacing: 25) {
... other labels
NavigationView {
NavigationLink(destination: SettingsView()) {
Label ("", systemImage: "gear")
.foregroundColor(.gray)
.font(.title)
}.navigationBarTitle(Text(""))
}
}
从字面上看,我在这个问题上花费了数周(偶尔),查找了几十个答案并尝试了各种格式选项,但没有运气。我还尝试将父堆栈和祖父堆栈封装到 NavigationView 中。无济于事。当然,这是一件微不足道的事情。有人能指出我正确的方向吗?
附言导航链接作为子窗口打开还有其他问题;我打算稍后解决这个问题。
编辑:对,所以我尝试使用 Yrb 的代码:
HStack(spacing: 25) {
... other labels
NavigationView {
NavigationLink(destination: Text("Linked View")) {
Image(systemName: "gear")
.foregroundColor(.gray)
.font(.title)
}
.fixedSize()
.background(Color.red)
}
]
很遗憾,没有实质性的变化……
【问题讨论】:
-
我们无法用所提供的信息真正回答您的问题。请参阅:How do I ask a good question? 和 How to create a Minimal, Reproducible Example。
-
很公平。我添加了代码来更好地解释
-
如果您绘制/填充该标签的背景(或在预览中单击它),可能更容易了解发生的情况,以便我们可以看到框架。另外,如果我需要一个让我在点击时触发动作的图像,我可能会使用一个按钮(它有内容和一个动作)而不是一个带有空文本的标签和一个 onTap。您改用标签的任何特殊原因?
-
其次,导航视图通常用于包装整个屏幕(或大部分屏幕)的内容,所以我怀疑你在这里得到什么,只包装单个标签/图标是一个奇怪的(微小的,不可见的)导航栏。同样,如果您在代码中四处单击,预览可见,您可能会看到围绕(微小)NavigationView 绘制的框架,然后在其中看到齿轮。我猜你可能想要一张工作表而不是 NavigationView?
标签: swiftui swiftui-navigationview