如何在navigationBarItems中对齐动态按钮

时间:2020-03-04 07:13:27

标签: swiftui

我试图在导航栏的尾部创建一个自定义菜单(基于editMode动态)。在“查看”模式下我需要3个按钮,在“编辑”模式下我只需要一个按钮。

问题是我无法按如下所示将按钮右对齐:

enter image description here

enter image description here

如您所见,“完成”按钮位于左侧。

我尝试添加Spacers()但没有运气。

.navigationBarItems(
        leading: BackButton(label: "") {
            self.presentation.wrappedValue.dismiss()
        },
        trailing:
            HStack {
                if self.mode?.wrappedValue == .inactive {
                    HStack(alignment: .center, spacing: 20) {
                        Button(action: {
                            ////////
                        }) {
                            Image(systemName: "trash")
                            .imageScale(.large)
                        }
                           ////////
                        Button(action: {

                        }) {
                            Image(systemName: "square.and.arrow.up")
                            .imageScale(.large)

                        }

                        CustomEditButton() {
                            ////////
                        }
                    }
                } else {
                    HStack {
                        CustomEditButton() {
                            /////
                        }
                    }
                }
            }

    )

1 个答案:

答案 0 :(得分:1)

相同的问题。条件语句内部或外部的Spacer()不起作用。 我注意到当从NavigationLink屏幕弹出视图时,对齐方式是固定/正确的。 无论如何,我都会根据导致更改的条件使用不透明性来使它最终起作用。 对于您而言,解决方法可能如下所示:

.navigationBarItems(
        leading: BackButton(label: "") {
            self.presentation.wrappedValue.dismiss()
        },
        trailing:
            ZStack {
                HStack(alignment: .center, spacing: 20) {
                    Button(action: {
                        ////////
                    }) {
                        Image(systemName: "trash")
                        .imageScale(.large)
                    }
                    Button(action: {
                       ////////
                    }) {
                        Image(systemName: "square.and.arrow.up")
                            .imageScale(.large)
                    }
                    CustomEditButton() {
                        ////////
                    }
                }
                .opacity((self.mode?.wrappedValue == .inactive) ? 1.0 : 0.0)

                HStack {
                    CustomEditButton() {
                        /////
                    }
                }
                .opacity((self.mode?.wrappedValue == .inactive) ? 0.0 : 1.0)
            }
    )