Swiftui 快捷界面导航链接隐藏箭头
是否有方法隐藏自动添加的导航链接视图右侧的箭头 我想使用NavigationView->List->HStack->NavigationLink_1-NavigationLink_2显示图像网格 导航链接有箭头,看起来很奇怪Swiftui 快捷界面导航链接隐藏箭头,swiftui,navigationview,Swiftui,Navigationview,是否有方法隐藏自动添加的导航链接视图右侧的箭头 我想使用NavigationView->List->HStack->NavigationLink_1-NavigationLink_2显示图像网格 导航链接有箭头,看起来很奇怪 它对我的作用方式: List { ForEach(elements) { element in ZStack { CustomView(element: element) NavigationLink
它对我的作用方式:
List {
ForEach(elements) { element in
ZStack {
CustomView(element: element)
NavigationLink(destination: DestinationView()) {
EmptyView()
}.buttonStyle(PlainButtonStyle())
}
}
}
您也可以这样做:
这对我很有效
@State var boolValue: Bool = false
HStack {
Text("Your text")
Toggle(isOn: $boolValue){
Text("")
}
if boolValue {
NavigationLink(destination: DestinationView()) {
EmptyView()
}.frame(width: 0)
}
}
它也适用于任何视图(不仅仅是文本)
我已经完成了
NavigationLink(destination: DestinationView()) {
EmptyView()
}
.frame(width: 0, height: 0)
.hidden()
唯一帮助我的是向NavigationLink添加
.opacity(0)
,如下所示:
List {
ForEach(elements) { element in
ZStack {
CustomView(element: element)
NavigationLink(destination: DestinationView()),
label: {}).opacity(0)
}
}
}
这对我来说很有用,只是在
ZStack
中添加了一个空的NavigationLink
List(viewModel.items, id: \.id) { item in
ZStack {
NavigationLink(destination: Destination()) {}
CustomView(item: item)
}
}
当我尝试在列表中的行内实现按钮点击时,只有这一点对我有效:
ZStack {
NavigationLink(destination: FlightBoardInformation(flight: flight), tag: FlightBoardNavigation.toFlightDetailed, selection: $navigation) {
EmptyView()
}
.frame(width: 0, height: 0)
.hidden()
.disabled(true)
Button(action: {
self.navigation = .toFlightDetailed
}) {
Text("\(self.flight.airline) \(self.flight.number)")
}.buttonStyle(PlainButtonStyle())
}
对我来说,最好的解决方法是使用
后台
:
NavigationLink(…){
.不透明度(0)
.背景(
HStack{
文本(“不带箭头的自定义视图”)
}
)
或者,如果您需要@turingtested发布的动态高度,请使用NavigationLink作为背景
Text("Your custom view without arrow")
.background(NavigationLink( ... ) {}.opacity(0))
我发现的最简单的方法是将导航放置在
.background
修改器中,不透明度为零:
列表{
文本(“单元格”)
.background(导航链接(“,目标:文本(“详细视图控制器”)).opacity(0))
}
使用此解决方案,您不会失去单元格的动态高度功能。对此也很好奇,您找到答案了吗?@crazyhor77不,我回到了故事板,UICollectionView,然后在单元格上单击。请参阅:这与返回时不可能选择同一元素的情况不同。我以这种方式使用了navigationlink,一切正常。使用表单时,这不起作用。
:`var body:some View{Form{navigationlink(目的地:Text(“视图”),tag:1,selection:$selection){EmptyView()}Text(“Tap”).ontapsignature{self.selection=1}}}`注意:上面示例中的VStack
是不需要的。请尝试以下方法:VStack{navlink Form}我使用了Rectangle().opacity(0.0)
而不是EmptyView()
作为列表,它成功了。我使用了相同的解决方案,但问题是,即使箭头不可见,您仍然可以点击它。在我的应用程序中,我必须禁用此功能,否则它将崩溃。有什么想法吗?.buttonStyle(PlainButtonStyle())对我有用..hidden()应该足够切换层次结构(即将NavigationLink
放在HStack
的背景中),根据@turingtested的解释更好。
ZStack {
NavigationLink(destination: FlightBoardInformation(flight: flight), tag: FlightBoardNavigation.toFlightDetailed, selection: $navigation) {
EmptyView()
}
.frame(width: 0, height: 0)
.hidden()
.disabled(true)
Button(action: {
self.navigation = .toFlightDetailed
}) {
Text("\(self.flight.airline) \(self.flight.number)")
}.buttonStyle(PlainButtonStyle())
}
Text("Your custom view without arrow")
.background(NavigationLink( ... ) {}.opacity(0))