1

我在父视图的子视图中有一个导航按钮,当我实现编辑按钮时,它显示在不同的位置:

struct DetailsView: View {

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


    var body: some View {

        NavigationView {
            Form {

                TextField("Placeholder", text: $item.name)
                    .disabled(.inactive == self.editMode?.wrappedValue)
                    // .textFieldStyle(RoundedBorderTextFieldStyle())
                    .foregroundColor((.active == self.editMode?.wrappedValue) ? Color.black : Color.gray)

            }
            .navigationBarTitle(.inactive == self.editMode?.wrappedValue ? "\(pocketItem.name) Details" : "Edit Pocket", displayMode: .inline)
            .navigationBarItems(
                trailing: Button(action: {
                    self.editMode?.wrappedValue = .active == self.editMode?.wrappedValue ? .inactive : .active
                    })
                    {
                        Text(.active == self.editMode?.wrappedValue ? "Done" : "Edit")
                    }
            )

        }

    }

}

我的应用程序的图像

4

1 回答 1

1

由于您的父视图具有 NavigationView,因此您无需在详细信息中嵌套另一个 NavigationView。从详细信息中删除 NavigationView 以解决问题。

var body: some View {
    //NavigationView {
        Form {
            TextField("Placeholder", text: $item)
                .disabled(.inactive == self.editMode?.wrappedValue)
                // .textFieldStyle(RoundedBorderTextFieldStyle())
                .foregroundColor((.active == self.editMode?.wrappedValue) ? Color.black : Color.gray)
        }
        .navigationBarTitle(.inactive == self.editMode?.wrappedValue ? "\(item) Details" : "Edit Pocket", displayMode: .inline)
        .navigationBarItems(
            trailing: Button(action: {
                self.editMode?.wrappedValue = .active == self.editMode?.wrappedValue ? .inactive : .active
                })
                {
                    Text(.active == self.editMode?.wrappedValue ? "Done" : "Edit")
                }
        )
    //}
}
于 2020-03-17T17:56:01.267 回答