Swiftui скрыть раскрытие arrow - PullRequest
1 голос
/ 10 февраля 2020

У меня есть это представление

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. Я пытаюсь добавить .buttonStyle(PlainButtonStyle()) или добавить отрицательный трейлинг к навигационной ссылке, но он не меняется.

Я уже прочитал этот вопрос и этот но они не работают в моем случае, вероятно, потому что я создаю сетку, а не простой список.

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

В этом сценарии возможный подход заключается в использовании нулевого кадра, как показано ниже

NavigationLink(destination: CustomView(data: item.FirstItem)) {
    EmptyView()
}.frame(width: 0)
0 голосов
/ 14 февраля 2020

Благодаря @Asperi я выяснил, в чем проблема.

С нулевым EdgeInsets в listRowInsets стрелка все еще показывает.

Так что я создаю этот трюк (Работает в 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))

Задайте значение для и сверху и снизу.

Я не знаю, является ли это правильным способом избавиться от этой надоедливой стрелки, но для моего приложения это работает: -)

...