Swift 2.0 не позволяет мне сделать UIAlertAction

эта картинка должна сказать достаточно: введите здесь описание изображения

Я прочесывал Интернет, чтобы найти ответы, и никто другой, похоже, не имеет этой проблемы. Я использую Xcode 7 Beta 3 со Swift 2. Я не могу понять, что не так.

заранее спасибо

РЕДАКТИРОВАТЬ:

Вот код:

func input(text:String) -> String {
    Say(text)
    let alert:UIAlertController = UIAlertController(title: "Goog", message: text, preferredStyle: UIAlertControllerStyle.Alert)
    [alert .addTextFieldWithConfigurationHandler({ (textfield: UITextField!) -> Void in
    })]
    var returnValue:String = ""
    let confirmAction = UIAlertAction(
        title: "OK", style: UIAlertActionStyle.Default) {(action) in
            returnValue = (alert.textFields[0] as UITextField).text!
            return
    }
    return returnValue
}

person Nerdy Lime Apps    schedule 20.07.2015    source источник
comment
Покажите больше кода, и мы сможем лучше решить вашу проблему. (Где определяется returnValue? Каков его тип?) И опубликуйте свой код в виде текста, а не скриншота Xcode. Не все используют SO так, чтобы можно было легко читать текст, встроенный в изображение.   -  person rickster    schedule 20.07.2015
comment
прямо перед тем, как я определяю действие. Я просто сказал: var returnValue:String =   -  person Nerdy Lime Apps    schedule 21.07.2015
comment
Эта ошибка имеет тенденцию вводить в заблуждение. Вы должны показать 5 строк, предшествующих и следующих за этим фрагментом кода (как текст).   -  person Mundi    schedule 21.07.2015


Ответы (2)


Вы хотите использовать перечисление Swift для стиля действия следующим образом:

let alertAction2 = UIAlertAction(title: "My Alert", style: .Default)
        {(action:UIAlertAction) -> Void in
            // do something with action
            return
        }

Или более кратко:

let alertAction2 = UIAlertAction(title: "My Alert", style: .Default)
        {action in
            // do something with action
        }
person pxr    schedule 20.07.2015
comment
пусть подтвердите действие = UIAlertAction (заголовок: OK, стиль: UIAlertActionStyle.Default) {(действие) в returnValue = (alert.textFields[0] as UITextField).text! вернуть } вернуть возвращаемое значение - person Nerdy Lime Apps; 20.07.2015
comment
о, я забыл отметить @PaulRobinson - person Nerdy Lime Apps; 20.07.2015
comment
Вы не можете ничего вернуть из обработчика, так как он возвращает Void. Все, что вы можете сделать, это сделать что-то с действием. Я правильно понял ваш комментарий @NerdyLimeApps? - person pxr; 20.07.2015
comment
Даже после удаления оператора return и простого присвоения значения переменной ошибка сохраняется. - person Nerdy Lime Apps; 21.07.2015
comment
@PaulRobinson Вам не нужны скобки вокруг action, и вам не нужен оператор возврата. - person Mundi; 21.07.2015

UIAlertController *altSuccess = [UIAlertController alertControllerWithTitle:@"Success" message:@"Login Successfully" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *okSuccess = [UIAlertAction
                                    actionWithTitle:@"OK"
                                    style:UIAlertActionStyleDefault
                                    handler:^(UIAlertAction * action)
                                    {
                                        NSLog(@"%@",[dict objectForKey:@"email"]);
                                        NSLog(@"%@",[dict objectForKey:@"password"]);
                                        [altSuccess dismissViewControllerAnimated:YES completion:nil];
                                    }];

        [altSuccess addAction:okSuccess];

        [self presentViewController:altSuccess animated:YES completion:nil];

Он отлично работает...

person Lotus Shah    schedule 16.06.2016
comment
Исходный вопрос касается конкретно использования UIAlertAction в Swift. Теги и название вопроса даже включают слово «Swift». Ваш ответ находится в Objective-C. - person Jeff C.; 30.06.2016