【问题标题】:Splitup of Form Inline Navigation Bar Title拆分表单内联导航栏标题
【发布时间】:2021-02-28 07:24:53
【问题描述】:

我创建了一个条目表单作为一个独立的项目,导航栏运行良好。然后我将视图复制到我的整个项目中。在此过程中,我的内联导航栏标题分开,将返回按钮留在应有的位置,并在显示标题和保存按钮之前创建了一个大空间(见下图)。 How to remove the default Navigation Bar space in SwiftUI NavigiationView 有一个类似的问题,但他们正在尝试从列表中删除除标题之外的空格,而我正在使用表单。导航栏空间较大的另一个问题是由于导航栏标题重复(Removing large amounts of whitespace in a SwiftUI subview)。这里情况不同。有什么想法吗?

这里是一些代码:

`struct entryView: View {

    @EnvironmentObject var userData: UserData
    @Environment(\.managedObjectContext) var viewContext    // core data
    
     . . .

    var body: some View {
       
        NavigationView {
            Form {
                
                // get entry date and time
                Section {
                    HStack {
                        Image("iconCalendar24")
                        Spacer()
                        DatePicker("", selection: $entryDT, in: ...Date())
                            .datePickerStyle(CompactDatePickerStyle())
                    }
                }

           . . .

 // select entry category
                Section {
                    HStack {
                        Text("Select Category")
                            .font(Font.subheadline.bold())
                        Picker(selection: $entryCat, label: Text("")) {
                            ForEach(0 ..< self.categories.count) {
                                Text(self.categories[$0]).tag($0)
                            }
                        }
                    }
                }

                .navigationBarTitle(Text("Expense Entry"), displayMode: .inline)
                .navigationBarItems(trailing:
                                    Button(action: {
                                        self.saveButton()   // button pressed
                                    }) {
                                        Text ("Save")
                                    }.disabled(moneyS.isEmpty)
                                
            )
        }
    } 
}

}

费用输入屏幕的模拟器视图

【问题讨论】:

    标签: swiftui ios14


    【解决方案1】:

    看起来您在父视图中的某处已经有一个NavigationView,因此您不需要在此处使用另一个。

    尝试删除

    struct entryView: View {
    
        @EnvironmentObject var userData: UserData
        @Environment(\.managedObjectContext) var viewContext    // core data
        
         . . .
    
        var body: some View {
           
            //NavigationView {        // << this one !!
    

    【讨论】:

      【解决方案2】:

      我把整个视图都发了短信,然后慢慢地一次一个地拼凑起来。当我从视图中删除 NavigationView { } 时,导航栏返回内联格式。

      奇怪的是,导航栏在独立项目中正确显示,但在与其他文件/视图一起带入主项目时失败。

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-26
        • 2021-09-30
        • 1970-01-01
        • 2021-02-24
        • 1970-01-01
        相关资源
        最近更新 更多