Как включить опцию сортировки с помощью кнопки «Изменить / Готово» в SwiftUI? - PullRequest
1 голос
/ 02 апреля 2020

Когда я нажимаю на кнопку «Изменить», она работает правильно, чтобы перевести список в активное состояние со значком удаления рядом с каждым элементом. Однако значок сортировки не отображается справа от каждого элемента, как ожидалось.

enter image description here

Это наводит меня на мысль, что я пропустил ключ элемент в следующем коде. Что еще требуется для включения опции сортировки?

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc
    @FetchRequest(entity: Task.entity(), sortDescriptors:[
        NSSortDescriptor(keyPath: \Task.isComplete, ascending: true)
    ]) var tasks: FetchedResults<Task>

    @State private var showingAddScreen = false

    var body: some View {
        NavigationView {
            List {
                ForEach(tasks, id: \.self) { task in
                    HStack {
                        Image(systemName: task.isComplete ? "square.fill" : "square")
                            .padding()
                            .onTapGesture {
                                task.isComplete.toggle()
                                try? self.moc.save()
                                print("Done button tapped")
                        }

                        Text(task.name ?? "Unknown Task")
                        Spacer()

                        Image("timer")
                            .onTapGesture {
                                print("Timer button tappped")
                        }
                    }
                }
                .onDelete(perform: deleteTask)
            }
            .navigationBarTitle("To Do List", displayMode: .inline)

            .navigationBarItems(leading: EditButton(), trailing: Button(action: {
                self.showingAddScreen.toggle()
            }) {
                Image(systemName: "plus")
            })
                .sheet(isPresented: $showingAddScreen) {
                    AddTaskView().environment(\.managedObjectContext, self.moc)
            }
        }
    }

    func deleteTask(at offsets: IndexSet) {
        for offset in offsets {
            let task = tasks[offset]
            moc.delete(task)
        }

        try? moc.save()
    }
}

1 Ответ

1 голос
/ 02 апреля 2020

Что еще требуется для включения опции сортировки?

появляется, когда предоставляется модификатор .onMove, ie. добавить

.onDelete(perform: deleteTask)
.onMove { sourceIndices, destinationIndex in
    // << your code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...