【问题标题】:Implementing multiple headers in SwiftUI在 SwiftUI 中实现多个标题
【发布时间】:2021-02-08 16:42:13
【问题描述】:

希望每个人都做得很好 我想就swiftui中的标题寻求一些帮助 我制作了一个应用程序并添加了类别,因此我需要标题来分隔我的数据 但是,它没有做我想做的事! (典型的... :joy:)

善良的灵魂会帮助迷失的灵魂找到启蒙之路吗?

    import SwiftUI

struct ContentView: View {
    // MARK: - PROPERTIES
    
    @State private var isShowingSettings: Bool = false
    
    var fruit: [Fruit] = fruitData
    var driedFruit: [DriedFruit] = driedFruitData
    
    // MARK: - BODY
    
    var body: some View {
        NavigationView {
            List {
                Section(header: fruitHeader) {
                    ForEach(fruit, id: \.self) { item in
                        NavigationLink(destination: FruitDetailView(fruit: item)) {
                            FruitRowView(fruit: item)
                                .padding(.vertical, 4)
                        }
                    }
                }
                Section(header: driedFruitHeader) {
                    ForEach(fruit, id: \.self) { item in
                        NavigationLink(destination: FruitDetailView(driedFruit: item)) {
                            FruitRowView(driedFruit: item)
                                .padding(.vertical, 4)
                        }
                    }
                }
            }
            
            .navigationTitle("Category")
            .navigationBarItems(trailing:
                                    Button(action: {
                                        isShowingSettings = true
                                    }) {
                                        Image(systemName: "slider.horizontal.3")
                                    } //: BUTTON
                                    .sheet(isPresented: $isShowingSettings, content: {
                                        SettingsView()
                                    })
            )
        } //: NAVIGATION
        .navigationViewStyle(StackNavigationViewStyle())
    }
​
    var fruitHeader: some View {
        Text("Fruits").padding(.leading, -10)
    }
​
    var driedFruitHeader: some View {
        Text("Dried fruits").padding(.leading, -10)
    }
}
// MARK: - PREVIEW
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView(fruit: fruitData, driedFruit: driedFruitData)
    }
}

【问题讨论】:

  • 您能描述一下您希望看到的情况与您正在经历的情况吗?
  • 我创建了 2 个数据文件(FruitData 和 DriedFruitData)。为了使它们不同,我想创建标题。 FruitData 通过但不通过 DryFruitData。它给了我这个错误“编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式”,然后在 var fruitHeader 和 var dryFruitHeader 处出现这两个错误“预期'('在函数声明的参数列表中 - 函数声明主体中应为“{” - 实例方法声明中应为“func”关键字插入“func””
  • @Doodi 只需删除这两个 var 并删除多余的空间,然后再添加它会修复

标签: list swiftui header


【解决方案1】:

你需要在 ForEach 中传递 dryFruit 数组

List {
    Section(header: fruitHeader) {
        ForEach(fruit, id: \.self) { item in
            NavigationLink(destination: FruitDetailView(fruit: item)) {
                FruitRowView(fruit: item)
                    .padding(.vertical, 4)
            }
        }
    }
    Section(header: driedFruitHeader) {
        ForEach(driedFruit, id: \.self) { item in //<--Here
            NavigationLink(destination: FruitDetailView(driedFruit: item)) {
                FruitRowView(driedFruit: item)
                    .padding(.vertical, 4)
            }
        }
    }
}

【讨论】:

  • 它没有工作:(我仍然有同样的错误
  • @Doodi 打破了您需要分隔代码的错误,对于参数中的预期 '(' 您只需要删除两个 var 并尝试重写代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 2020-02-11
相关资源
最近更新 更多