SwiftUI:NavigationBarItem的leading未显示出来。

3

为什么导航栏项没有显示出来?这段代码在一个 sheet 中被调用,但之前并没有关系...

struct ChangePasswordView: View {
    @Environment(\.presentationMode) private var presentationMode

    @State private var passwordNew = ""
    @State private var passwordNewAgain = ""

    var body: some View {
        ScrollView {
            changePassword
        }
        .navigationBarItems(leading: backButton)
        .navigationBarItems(trailing: finishButton)
    }

    var backButton: some View {
        Button(action: { self.presentationMode.wrappedValue.dismiss() }) {
            Text("Cancel")
        }
    }

    var finishButton: some View {
        Button(action: {
            self.changePasswordGlobally()
            self.presentationMode.wrappedValue.dismiss()
        }) {
            Text("Apply")
        }
        .disabled(self.passwordNew.isEmpty || self.passwordNew != self.passwordNewAgain)
        .disableAutocorrection(true)
    }
}

如下屏幕截图所示,导航栏应该显示在前面的navigationBarItem未显示:

遇到问题的屏幕截图!

1个回答

7

对于两个侧栏项目都使用此变量(已测试,适用于Xcode 11.2 / iOS 13.2):

ScrollView {
    changePassword
}
.navigationBarItems(leading: backButton, trailing: finishButton)

可以确认,使用两个 navigationBarItems 调用(一个用于 leading,一个用于 trailing)无法实现! - Zorayr
是的,在iOS14中如果有两个调用,它就无法工作。但在iOS15中可以正常工作 :) - Murali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接