Swiftui隐藏公开箭头

时间:2020-02-10 11:59:23

标签: swiftui swiftui-navigationlink

我有这个视图

NavigationView {
                 GeometryReader { geometry in

                    List {
                        ForEach(self.viewModel.items) { item in
                            HStack(spacing: 0, content:  {
                                ZStack {
                                    RowItemView(data: item.FirstItem)
                                    NavigationLink(destination: CustomView(data: item.FirstItem))
                                    {
                                        EmptyView()
                                    }

                                }
                                .frame(width: geometry.size.width / 2, alignment: .center)

                                if (item.SecondItem != nil)  {
                                    ZStack {
                                            RowItemView(data: item.SecondItem!)
                                    NavigationLink(destination: CustomView(data: item.SecondItem!))
                                    {
                                        EmptyView()
                                    }
                                }
                            })
                        }.listRowInsets(EdgeInsets())
                    }
                }

我想隐藏NavigationView的disclouse箭头。 我尝试向NavigationLink添加.buttonStyle(PlainButtonStyle())或添加否定尾随,但它没有改变。

我已经阅读了this questionthis one,但在我的情况下它们不起作用,可能是因为我正在创建网格而不是简单列表。

2 个答案:

答案 0 :(得分:1)

在这种情况下,可能的方法是使用零帧,如下所示

NavigationLink(destination: CustomView(data: item.FirstItem)) {
    EmptyView()
}.frame(width: 0)

答案 1 :(得分:0)

感谢@Asperi,我弄清楚了问题所在。

listRowInsets中的EdgeInsets为零时,箭头仍然显示。

所以我创建了这个技巧(在Xcode 13.3.1中有效)

List {
    ForEach(self.viewModel.items) { item in
        //code for creating the row
    }.listRowInsets(EdgeInsets.init(top: 8, leading: 0, bottom: 8, trailing: 0))

为顶部和底部的 都输入一个值。

我不知道这是否是摆脱烦人的箭头的正确方法,但是对于我的应用程序来说,它是可行的:-)