SwiftUI NavigationLink隐藏箭头

时间:2019-10-11 02:33:36

标签: swiftui navigationview

是否可以隐藏自动添加的导航链接视图右侧的箭头?

我想使用NavigationView->列表-> HStack-> NavigationLink_1-NavigationLink_2

显示图像网格

NavigationLinks中有箭头,看起来很奇怪 https://theburningmonk.com/2019/03/dynamodb-ttl-as-an-ad-hoc-scheduling-mechanism/

13 个答案:

答案 0 :(得分:23)

它为我工作的方式:

List { 
    ForEach(elements) { element in
        ZStack {
            CustomView(element: element)
            NavigationLink(destination: DestinationView()) {
                EmptyView()
            }.buttonStyle(PlainButtonStyle())
        }
    }
}

答案 1 :(得分:3)

我发现的最简单的方法是将导航放在 .background 修饰符中,其中 opacity 为零:

List {
    Text("The cell")
        .background( NavigationLink("", destination: Text("The detail view controller")).opacity(0) )
}

使用此解决方案,您不会失去单元格的动态高度功能。

答案 2 :(得分:2)

唯一帮助我的是将.opacity(0)添加到NavigationLink中,如下所示:

List { 
    ForEach(elements) { element in
        ZStack {
            CustomView(element: element)
            NavigationLink(destination: DestinationView()), 
            label: {}).opacity(0)
        }
    }
}

答案 3 :(得分:1)

@State var selection: Int? = nil

var body: some View {
    let navigation = NavigationLink(destination: Text("View"), tag: 1, selection: $selection) { EmptyView() }
    return 
        VStack { 
            navigation
            Text("Tap").onTapGesture { self.selection = 1 }
        }
}

答案 4 :(得分:1)

我已经完成了

NavigationLink(destination: DestinationView()) {
      EmptyView()
}
.frame(width: 0, height: 0)
.hidden()

答案 5 :(得分:1)

只有这对我有用,当我尝试在列表中的行内实现按钮点击时:

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())
            }

答案 6 :(得分:1)

对我来说最好的解决方法是使用 background

NavigationLink(...) {}
       .opacity(0)
       .background(
         HStack {
           Text("Your custom view without arrow")
         }
       ) 

或者如果你需要动态高度作为@turingtested 发布使用 NavigationLink 作为背景

Text("Your custom view without arrow")
        .background(NavigationLink( ... ) {}.opacity(0))

答案 7 :(得分:1)

尽管 .background(...).opacity(0) 有效,但在更复杂的视图中,它会通过所有视图扩展自身,并与按钮等其他元素发生冲突。

如果您需要在 List 中使用它,对我有用的方法还将 NavigationLink 标记为 .disabled(true)

    Text(...)
      .background( NavigationLink(...).opacity(0).disabled(true) )

答案 8 :(得分:0)

尝试添加到滚动视图中,以使

ScrollView(.horizontal, showsIndicators: false)

答案 9 :(得分:0)

这对我有用,只是在NavigationLink中添加一个空的ZStack

List(viewModel.items, id: \.id) { item in
    ZStack {
        NavigationLink(destination: Destination()) {}
        CustomView(item: item)
    }
}

答案 10 :(得分:-1)

您也可以这样做: 这对我有用,

@State var boolValue: Bool = false


                HStack {
                    Text("Your text")
                    Toggle(isOn: $boolValue){
                        Text("")
                    }
                    if boolValue {
                        NavigationLink(destination: DestinationView()) {
                            EmptyView()
                        }.frame(width: 0)
                    }
                }

答案 11 :(得分:-1)

我将 navigationLinkopacity 设置为零,它就像一个魅力

                    NavigationLink(
                    destination: Text("Destination"),
                    label: {}).opacity(0)

答案 12 :(得分:-2)

它还可以与任何视图(不仅是文本)一起使用

ZStack {
    Text("Some text")
    NavigationLink(destination: Text("Hello")) { 
            EmptyView()
    }.frame(width: 0)
}