当前位置:  开发笔记 > IOS > 正文

如何在UIAlertController中添加textField?

如何解决《如何在UIAlertController中添加textField?》经验,为你挑选了3个好方法。

在此输入图像描述

在此输入图像描述

我想实现一个关于更改密码的功能,它需要用户输入他以前的密码,我在一个警告对话框中设计它,我想点击"确认修改"按钮,然后跳转到另一个视图控制器更改密码.我写了一些代码,但我不知道下一刻该如何写.



1> Johnykutty..:

您将通过其textFieldsreadonly属性从警报控制器获取所有添加的文本字段,您可以使用它来获取其文本.喜欢

斯威夫特4:

let alertController = UIAlertController(title: "", message: "", preferredStyle: .alert)
alertController.addTextField { textField in
    textField.placeholder = "Password"
    textField.isSecureTextEntry = true
}
let confirmAction = UIAlertAction(title: "OK", style: .default) { [weak alertController] _ in
    guard let alertController = alertController, let textField = alertController.textFields?.first else { return }
    print("Current password \(String(describing: textField.text))")
    //compare the current password and do action here
}
alertController.addAction(confirmAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)

注意: textField.text是可选的,在使用之前将其解包

Objective-C的:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
    textField.placeholder = @"Current password";
    textField.secureTextEntry = YES;
}];
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"Current password %@", [[alertController textFields][0] text]);
    //compare the current password and do action here

}];
[alertController addAction:confirmAction];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"Canelled");
}];
[alertController addAction:cancelAction];
[self presentViewController:alertController animated:YES completion:nil];

通过[[alertController textFields][0] text]这一行,它将第一个文本字段添加到alerController并获取其文本.


@ Juice007这意味着你正在获取alertcontroller的第一个文本字段并获取其文本,非常简单
你应该使用`[weak alertController]`来避免保留周期.

2> 小智..:

您可以添加多个文本字段以提醒控制器并使用警报控制器的textFields属性访问它们

如果新密码为空字符串,请再次显示警报.或者另一种方法是禁用"确认"按钮,仅在文本字段包含文本时启用它.

UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"confirm the modification" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
    UITextField *password = alertController.textFields.firstObject;
    if (![password.text isEqualToString:@""]) {

        //change password

    }
    else{
        [self presentViewController:alertController animated:YES completion:nil];
    }
}];



3> CodeBender..:

这是Swift 4.0的更新答案,它创建了所需的文本字段:

// Create a standard UIAlertController
let alertController = UIAlertController(title: "Password Entry", message: "", preferredStyle: .alert)

// Add a textField to your controller, with a placeholder value & secure entry enabled
alertController.addTextField { textField in
    textField.placeholder = "Enter password"
    textField.isSecureTextEntry = true
    textField.textAlignment = .center
}

// A cancel action
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { _ in
    print("Canelled")
}

// This action handles your confirmation action
let confirmAction = UIAlertAction(title: "OK", style: .default) { _ in
    print("Current password value: \(alertController.textFields?.first?.text ?? "None")")
}

// Add the actions, the order here does not matter
alertController.addAction(cancelAction)
alertController.addAction(confirmAction)

// Present to user
present(alertController, animated: true, completion: nil)

它首次呈现时的外观如何: 在此输入图像描述

在接受文字的同时:

在此输入图像描述

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有