Как скрыть только начальную или конечную кнопку NavigationItem - PullRequest
1 голос
/ 17 марта 2020

Я хочу скрыть кнопку «Назад», когда представление формы находится в режиме редактирования:

struct DetailsView: View {

    @Binding var item: PocketItem
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    @Environment(\.editMode) var editMode

    var body: some View {

        Form {
            TextField("qwerty", text: $pocketItem.name)
                .disabled(.inactive == self.editMode?.wrappedValue)
                .foregroundColor((.active == self.editMode?.wrappedValue) ? Color.black : Color.gray)
        }
        .navigationBarTitle(.inactive == self.editMode?.wrappedValue ? "\(item.name) Details" : "Edit View", displayMode: .inline)

        .navigationBarItems(
            leading: Button(action: {self.presentationMode.wrappedValue.dismiss()}){
                Image(systemName: "chevron.left").imageScale(.large)
                Text("Back")
            },
            trailing: Button(action: {
                self.editMode?.wrappedValue = .active == self.editMode?.wrappedValue ? .inactive : .active
            })
            {
                Text(.active == self.editMode?.wrappedValue ? "Done" : "Edit")
            }
        )

    }

}

Можно ли использовать любые модификаторы в конечных или ведущих элементах, чтобы скрыть их?

1 Ответ

0 голосов
/ 17 марта 2020

Можно использовать условный вид, как показано ниже

    ...
    .navigationBarItems(
        leading: leadingButton(),    // << here !!
        trailing: Button(action: {
            self.editMode?.wrappedValue = .active == self.editMode?.wrappedValue ? .inactive : .active
        })
        {
            Text(.active == self.editMode?.wrappedValue ? "Done" : "Edit")
        }
    )
}

private func leadingButton() -> some View {
    Group {
        if self.editMode?.wrappedValue != .active { // otherwise will be EmptyView
            Button(action: {self.presentationMode.wrappedValue.dismiss()}){
                Image(systemName: "chevron.left").imageScale(.large)
                Text("Back")
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...