How to add textField in UIAlertController?

前端 未结 3 1968
梦谈多话
梦谈多话 2020-12-04 18:59

I want to realize a function about changing password. It requires users to input their previous password in an alert dialog.

I want to click the button \"Confirm the

3条回答
  •  佛祖请我去吃肉
    2020-12-04 19:54

    You will get all added textfields from alert controller by its textFields readonly property, you can use it to get its text. Like

    Swift 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)
    

    Note: textField.text is optional, unwrap it before using

    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];
    

    By [[alertController textFields][0] text] this line, it will take first textfield added to the alerController and get its text.

提交回复
热议问题