Как создать и получить значение возврата из диалога какао? - PullRequest
16 голосов
/ 12 сентября 2011

В моем приложении я хочу создать диалоговое окно с одним текстовым полем и кнопкой, через который я могу подсказать пользователю и вернуть введенное пользователем значение.

Как мне это сделать в Какао, Objective-C?

Я не нашел никакого предопределенного метода для этого.

Ответы [ 4 ]

41 голосов
/ 12 сентября 2011

Вы можете вызвать NSAlert и поместить NSTextField в качестве его аксессуара.

16 голосов
/ 23 октября 2014

В OS X 10.10:

    NSAlert *alert = [[NSAlert alloc] init];
    [alert setMessageText:@"Permission denied, sudo password?"];
    [alert addButtonWithTitle:@"Ok"];
    [alert addButtonWithTitle:@"Cancel"];

    NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 24)];
    [input setStringValue:@""];

    [alert setAccessoryView:input];
    NSInteger button = [alert runModal];
    if (button == NSAlertFirstButtonReturn) {
        password = [input stringValue];
    } else if (button == NSAlertSecondButtonReturn) {

    }
8 голосов
/ 26 февраля 2016

Пример в Swift от Xcode 7.2.1 и OS X 10.11:

let a = NSAlert()
a.messageText = "Please enter a value"
a.addButtonWithTitle("Save")
a.addButtonWithTitle("Cancel")

let inputTextField = NSTextField(frame: NSRect(x: 0, y: 0, width: 300, height: 24))
inputTextField.placeholderString = "Enter string"
a.accessoryView = inputTextField

a.beginSheetModalForWindow(self.window!, completionHandler: { (modalResponse) -> Void in
    if modalResponse == NSAlertFirstButtonReturn {
        let enteredString = inputTextField.stringValue
        print("Entered string = \"\(enteredString)\"")
    }
})
7 голосов
/ 12 сентября 2011

Я считаю, что вы ищете лист.Взгляните на темы программирования листов документацию

Я только что обновил проект Github Sample .Вы можете ввести текст в поле на листе и передать его обратно в главное окно.

В этом примере показано, как создать представление в кончике и использовать пользовательский класс контроллера листа, который использует блок в качестве обратного вызова.вместо того, чтобы создавать и передавать селектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...