Я пишу приложение, которое будет проходить через кучу данных, и когда оно попадает в определенное условие, я хотел бы отобразить пользовательский диалог, позволяющий пользователю редактировать некоторую информацию для данных. Я попытался использовать модальную последовательность.
Однако, когда я запускаю код, он сразу открывает все диалоги. Он продолжает перемещаться по данным, даже если открыто «модальное» диалоговое окно.
Пример:
for x in 1...10 {
print("X is: \(x)")
self.presentAsModalWindow(sheetViewController)
}
Это отобразит 10 окон... оно не действует по-настоящему модально.
Я хотел бы, чтобы это работало как NSAlert, где выполнение останавливается до закрытия диалогового окна. NSAlert не будет работать, потому что мне нужны учебники и другие элементы управления в модальном окне.
Есть ли у кого-нибудь идеи, как это сделать?
Заранее спасибо!





Вместо PresentAsModalWindow используйте
NSApp.runModal(for: NSPanel(contentViewController: sheetViewController))
И в вашем SheetViewController вы должны закрыть модальное окно в зависимости от логики.
@IBAction func buttonClicked(_ sender: NSButton) {
if NSApp.modalWindow == self.view.window && NSApp.modalWindow!.isVisible {
NSApp.stopModal() // Use .stopModal(withCode: .OK) if response has to be sent
self.view.window?.close()
}
}