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