无法访问视图中绑定数组的元素

问题描述 投票:0回答:1

我有一个 提醒结构定义如下。我有一个主视图,我在主视图中使用状态属性定义了此结构,然后调用另外 2 个视图。我已将此状态定义为视图中的绑定属性。该视图读取数组,然后显示值。

struct Reminder: Identifiable, Hashable {
    var id = UUID() 
    var title: String
    var time: Date 
    var rangeStart: Date
    var rangeEnd: Date
    var frequency: Int
    var sound: String 
    var specificTimeSet: Bool
    var remindThroughoutHour: Bool
}

提醒列表查看:

struct ReminderListView: View {
    @Binding var reminders: [Reminder]
    
    var body: some View {
        NavigationView {
            if reminders.isEmpty {
                VStack {
                    Text("You’ve no Reminders")
                        .font(.title2)
                        .foregroundColor(.gray)
                        .padding()
                    Spacer()
                }
                .navigationTitle("Your Reminders")
            } else {
                List  {
                    ForEach($reminders) { reminder in
                        HStack {
                            Text(reminder.title)
                            Spacer()
                            NavigationLink(destination: CreateReminderView(reminders: $reminders, reminderToEdit: reminder)) {
                                Text("Edit")
                                    .foregroundColor(.blue)
                            }
                            Button(action: {
                                deleteReminder(reminder.wrappedValue)
                            }) {
                                Image(systemName: "trash")
                                    .foregroundColor(.red)
                            }
                        }
                    }
                }
                .navigationTitle("Your Reminders")
            }
        }

    }
}

尝试访问 forEach 块中的

reminder.title
时出现以下错误。
Initializer 'init(_:)' requires that 'Binding<String>' conform to 'StringProtocol'

我不确定这是否是访问绑定数组的正确方法。请问我该如何解决这个问题?

swift swiftui
1个回答
0
投票

因为

reminder
中的
ForEach
Binding<Reminder>
,所以试试这个:

...
ForEach($reminders) { $reminder in //<- put $ here
    HStack {
        Text(reminder.title)
        ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.