Пожалуйста, прости меня, если я не слишком хорошо описываю этот вопрос, я новичок в программировании приложений MacOS с использованием Swift. Я знаю, что я поступаю по этому поводу, вероятно, неправильно, и мне просто нужно, чтобы кто-то сказал мне правильный путь.
Экран моего основного приложения
У меня есть приложение Core Data, которое хранит упорядоченный список объектов, называемых Предметами. Эти элементы предназначены для описания одного шага в упражнении, описывающего, что должно происходить на экране. Если вы знаете приложение Mac QLab, то каждый элемент в QLab похож на одну реплику.
Я создал класс Activity, который предназначен для чтения каждого элемента, чтобы определить тип элемента и связанную с ним информацию. Как только тип Элемента определен, классу Activity нужно представить представление с информацией, относящейся к этому конкретному элементу, а затем подождать, пока пользователь нажмет клавишу со стрелкой вправо, чтобы затем перейти к следующему элементу в хранилище основных данных, где процесс повторяется до все пункты были прочитаны. Каждый раз, когда новый элемент читается в цикле, информация на экране должна меняться после того, как пользователь каждый раз нажимает стрелку вправо.
Проблема в том, что я не знаю точно, как лучше всего говорить об этом с программной точки зрения. У меня есть код, который получает массив предметов в виде NSFetchRequest:
let moc = (NSApplication.shared.mainWindow?.contentViewController?.representedObject as! NSPersistentDocument).managedObjectContext!
let fetchRequest : NSFetchRequest = Item.fetchRequest()
do {
let items = try moc.fetch(fetchRequest)
print("Found " + String(items.count) + " items to use in the activity.")
for item in items {
print(item.itemType)
// How do I pause this loop for a user keypress after using data from this Item to display?
}
} catch {
print("Error retrieving Items")
}
Я могу получить событие нажатия клавиш, используя NSEvent.addLocalMonitorForEvents(matching: .keyDown)
, и я также могу создавать View Controllers для отображения информации на втором экране. Я просто не знаю, как мне создать, так сказать, «основной цикл», чтобы отображалась информация, а затем приложение ждет, пока пользователь не нажмет клавишу для продолжения ...
Я могу поделиться своим кодом проекта, если потребуется дополнительная информация и большое спасибо всем, кто сможет меня просветить ...:)