【问题标题】:NavigationItem button and Edit mode button are displayed in different levelsNavigationItem 按钮和 Edit mode 按钮分层次显示
【发布时间】:2020-03-17 17:34:58
【问题描述】:

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

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

        }

    }

}

image of my app

【问题讨论】:

    标签: ios swift swiftui-form


    【解决方案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")
                    }
            )
        //}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多