我将所有内容从AlertView更改为AlertController,但我无法在线查找任何用于检索用户在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中定义的,所以我无法在该代码之外访问它。但是,如果我尝试预定义它,我会收到一条错误消息。任何帮助将不胜感激!
答案 0 :(得分:32)
UIAlertController
有一个textFields
数组,在您添加它们时排序(您添加的第一个是索引0)。由于它是通用数组,因此您必须在访问text
字段之前强制转换结果。
__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;
}];
答案 1 :(得分:4)
在我的情况下,我在脚本中的各个点重新使用AlertController,因此在我的标题.h文件中,我将其设为全局:
UIAlertController *alertController;
然后在我的实现.m文件中,我将其分配给当前警报,如下所示:
alertController = (UIAlertController *)self.presentedViewController;
上面检索现有警报并将其分配给全局。为此,您首先需要初始化它或创建一个新的:
UIAlertController* anyALERTname = [UIAlertController alertControllerWithTitle:@"Alert Title" message:yourAlertMessage preferredStyle:UIAlertControllerStyleAlert];
现在你有了当前的AlertController,你可以伸手去拿(并抓住)TextField:
if (alertController) {
//go and get the action field
UITextField *alertText1 = alertController.textFields.firstObject;
NSLog(@"what is alert text? %@",alertText1.text);
}