我正在寻找一种解决方案来显示披露指标V形,而无需将我的视图包装到NavigationLink
中。例如,我想显示指标,但不导航到新视图,而是显示一个模式。
我发现了很多隐藏指示器按钮的解决方案,但是没有一个解决方案说明如何添加指示器。在当前的SwiftUI版本中甚至可能吗?
struct MyList: View {
var body: some View {
NavigationView {
List {
Section {
Text("Item 1")
Text("Item 2")
Text("Item 3")
Text("Item 4")
}
}
}
}
例如,我想将公开指示符添加到Item 1
,而无需将其包装到NavigationLink
我已经尝试用chevron.right
SF符号伪造该指标,但是该符号与100%的默认iOS不匹配。顶部是默认底部是chevron.right
。
答案 0 :(得分:4)
希望这是您想要的。您可以将该项目添加到HStack中,并在两者之间添加一个空格作为伪造该项目的链接:
HStack {
Text("Item 1")
Spacer()
Button(action: {
}){
Image(systemName: "chevron.right")
.font(.body)
}
}
答案 1 :(得分:2)
绝对有可能。
您可以结合使用 Button
和非功能性 NavigationLink
来实现您想要的。
在 NavigationLink
上添加以下扩展。
extension NavigationLink where Label == EmptyView, Destination == EmptyView {
/// Useful in cases where a `NavigationLink` is needed but there should not be
/// a destination. e.g. for programmatic navigation.
static var empty: NavigationLink {
self.init(destination: EmptyView(), label: { EmptyView() })
}
}
然后,在您的 List
中,您可以对行执行以下操作:
// ...
ForEach(section.items) { item in
Button(action: {
// your custom navigation / action goes here
}) {
HStack {
Text(item.name)
Spacer()
NavigationLink.empty
}
}
}
// ...
以上产生的结果与您使用 NavigationLink
的结果相同,并且还按预期在交互中突出显示/取消突出显示该行。
答案 2 :(得分:0)
或者创建一个假冒的东西并使用它,即使您点击也可以调用事件。
NavigationLink(destination: EmptyView()) {
HStack {
Circle()
Text("TITLE")
}
}
.contentShape(Rectangle())
.onTapGesture {
print("ALERT MAYBE")
}