swift - 为什么它说 "Trailing closure passed to parameter of type ' Int' 不接受闭包”?

标签 swift swiftui

我在 SwiftUI 项目中为 Onboarding Screen 添加了第二个 TabView,它抛出了类似这样的错误

Trailing closure passed to a parameter of type 'Int' that does not accept a closure

有什么想法吗?

TabView {
    ForEach(0 ..< onboardingData.count) { index in
        let element = onboardingData[index]
        OnboardingCard(onboardingItem: element)
    }
}

入职卡:

fileprivate struct OnboardingCard: View {
    let onboardingItem: OnboardingItem
    var body: some View {
        VStack {
            Image(onboardingItem.imageName)
                .resizable()
                .frame(height: 320)
                .frame (maxWidth: .infinity)
            Text(onboardingItem.title)
                .font(.title)
                .foregroundColor(.black)
                .bold()
                .padding()
            Text(onboardingItem.description)
                .multilineTextAlignment(.center)
                .font(.body)
                .foregroundColor(.gray)
                .padding (.horizontal, 15)
        }
    }
}
        
struct OnboardingItem {
    let imageName: String
    let title: String
    let description: String
}

最佳答案

我只是运行你的代码。它按预期工作。


确认 Identifiable 协议(protocol)。

struct OnboardingItem: Identifiable {
    var id: UUID = UUID()
    let imageName: String
    let title: String
    let description: String
}

这样做可以避免使用和基于索引的循环。而是这样做:

ForEach(onboardingData) { onboardingItem in
     OnboardingCard(onboardingItem: onboardingItem)
}

关于swift - 为什么它说 "Trailing closure passed to parameter of type ' Int' 不接受闭包”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68481300/

相关文章:

ios - 快速在每个页面上添加相同的导航栏

swift - 如何从 MacOS 上的 SwiftUI 中的 TextField 移除焦点?

swift - iOS 13 SwiftUI : app crashes upon launch on real device

swift - 如何附加到 SwiftUI 中的数组?

ios - 如何在 SwiftUI ZStack 中对齐文本以适应较小的屏幕尺寸?

swift - 结果类型 'Element' 与预期类型不匹配

swift - swift 在同一行左右对齐

ios - 击键时返回 Action

arrays - 在 swift 中调用解析函数失败

swift - 如何防止文本编辑器在 SwiftUI 中滚动?