Подтвердить что ты не робот

Создайте NSAlert с Swift

У меня есть код для создания и NSAlert в Objective-C, но теперь я хотел бы создать его в Swift.

Предупреждение должно подтвердить, что пользователь хотел бы удалить документ.

Я хотел бы, чтобы кнопка "удалить" выполнила функцию удаления и "отменить", чтобы закрыть предупреждение.

Как я могу записать это в Swift?

Спасибо

    NSAlert *alert = [[[NSAlert alloc] init] autorelease];
    [alert addButtonWithTitle:@"Delete"];
    [alert addButtonWithTitle:@"Cancel"];
    [alert setMessageText:@"Delete the document?"];
    [alert setInformativeText:@"Are you sure you would like to delete the document?"];
    [alert setAlertStyle:NSWarningAlertStyle];
    [alert beginSheetModalForWindow:[self window] modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];
4b9b3361

Ответ 1

beginSheetModalForWindow:modalDelegate устарел в OS X 10.10 Yosemite.

Swift 2

func dialogOKCancel(question: String, text: String) -> Bool {
    let alert: NSAlert = NSAlert()
    alert.messageText = question
    alert.informativeText = text
    alert.alertStyle = NSAlertStyle.WarningAlertStyle
    alert.addButtonWithTitle("OK")
    alert.addButtonWithTitle("Cancel")
    let res = alert.runModal()
    if res == NSAlertFirstButtonReturn {
        return true
    }
    return false
}

let answer = dialogOKCancel("Ok?", text: "Choose your answer.")

Это возвращает true или false в соответствии с выбором пользователя.

NSAlertFirstButtonReturn представляет собой первую кнопку, добавленную в диалог, здесь "ОК".

Swift 3

func dialogOKCancel(question: String, text: String) -> Bool {
    let alert = NSAlert()
    alert.messageText = question
    alert.informativeText = text
    alert.alertStyle = NSAlertStyle.warning
    alert.addButton(withTitle: "OK")
    alert.addButton(withTitle: "Cancel")
    return alert.runModal() == NSAlertFirstButtonReturn
}

let answer = dialogOKCancel(question: "Ok?", text: "Choose your answer.")

Swift 4

Теперь мы используем перечисления для стиля предупреждения и выбора кнопок.

func dialogOKCancel(question: String, text: String) -> Bool {
    let alert = NSAlert()
    alert.messageText = question
    alert.informativeText = text
    alert.alertStyle = .warning
    alert.addButton(withTitle: "OK")
    alert.addButton(withTitle: "Cancel")
    return alert.runModal() == .alertFirstButtonReturn
}

let answer = dialogOKCancel(question: "Ok?", text: "Choose your answer.")

Ответ 2

Я думаю, что это может сработать для вас...

    let a = NSAlert()
    a.messageText = "Delete the document?"
    a.informativeText = "Are you sure you would like to delete the document?"
    a.addButtonWithTitle("Delete")
    a.addButtonWithTitle("Cancel")
    a.alertStyle = NSAlertStyle.WarningAlertStyle

    a.beginSheetModalForWindow(self.view.window!, completionHandler: { (modalResponse) -> Void in
        if modalResponse == NSAlertFirstButtonReturn {
            print("Document deleted")
        }
    })