Input 如何使用objective c从UIAlertController中的文本字段访问输入?

Input 如何使用objective c从UIAlertController中的文本字段访问输入?,input,ios8,uialertcontroller,Input,Ios8,Uialertcontroller,我正在将所有内容从AlertView更改为AlertController,但是我找不到任何objective c的在线内容,这些内容检索用户在AlertController文本字段中输入的内容。以下是我所拥有的: if ([UIAlertController class]) { UIAlertController *alertControllerK2 = [UIAlertController

我正在将所有内容从AlertView更改为AlertController,但是我找不到任何objective c的在线内容,这些内容检索用户在AlertController文本字段中输入的内容。以下是我所拥有的:

if ([UIAlertController class]) {
            UIAlertController *alertControllerK2 = [UIAlertController
                                                    alertControllerWithTitle:@"\u00A0"
                                                    message:@"Please enter the first number."
                                                    preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *K2okAction = [UIAlertAction
                                         actionWithTitle:@"OK"
                                         style:UIAlertActionStyleDefault
                                         handler:nil];
            [alertControllerK2 addTextFieldWithConfigurationHandler:^(UITextField *K2TextField)
             {
                 K2TextField.placeholder = NSLocalizedString(@"Please enter the first number.", @"Please enter the first number.");
             }];
            [alertControllerK2 addAction:K2okAction];
            [self presentViewController:alertControllerK2 animated:YES completion:nil];
        } else {
            UIAlertView *alertK2;
            alertK2 = [[UIAlertView alloc]
                       initWithTitle:@"\u00A0"
                       message:@"Please enter the first number."
                       delegate: self
                       cancelButtonTitle:@"OK"
                       otherButtonTitles:nil];
            alertK2.alertViewStyle=UIAlertViewStylePlainTextInput;
            [alertK2 show];
        }

问题是K2TextField是在UIAlertController内部定义的,所以在代码之外我无法访问它。但是如果我尝试预定义它,我会收到一条错误消息。任何帮助都将不胜感激

UIAlertController有一个
textFields
数组,这些字段在添加时按顺序排列(添加的第一个字段是索引0)。由于它是一个通用数组,您必须在访问
文本
字段之前强制转换结果

__weak UIAlertController *alertRef = alertController;
UIAlertAction* okAction = [UIAlertAction actionWithTitle:@"Button Text"
                                         handler:^(UIAlertAction * action) {
                                             // access text from text field
                                             NSString *text = ((UITextField *)[alertRef.textFields objectAtIndex:0]).text;
                                         }];

在我的例子中,我在脚本中的不同点重新使用AlertController,因此在header.h文件中,我将其设置为全局:

 UIAlertController *alertController;
然后在implementation.m文件中,我将其分配给当前警报,如下所示:

 alertController = (UIAlertController *)self.presentedViewController;
以上内容检索现有警报并将其分配给全局警报。要使其工作,您首先需要初始化它或创建一个新的:

 UIAlertController* anyALERTname = [UIAlertController alertControllerWithTitle:@"Alert Title" message:yourAlertMessage preferredStyle:UIAlertControllerStyleAlert];
现在您有了当前的AlertController,您可以访问(并抓取)文本字段:

 if (alertController) {

    //go and get the action field

    UITextField *alertText1 = alertController.textFields.firstObject;

    NSLog(@"what is alert text? %@",alertText1.text);


}