如何编辑 alertViewController 而不根据操作将其关闭

How to edit alertViewController without dismissing it accordingly to the action

我在我的应用程序中放置了一个文本字段时有一个警告。用户可以使用它在数组中添加一些值。但是我希望所有的值都不同。因此,如果用户插入现有值,我希望清除文本字段并显示不同的占位符文本,告诉用户插入新值。

这就是我现在正在做的事情:

func appendWord(){
        let alertController = UIAlertController(title:"insert a word", message: nil, preferredStyle: UIAlertController.Style.alert)
        alertController.addTextField { (textField : UITextField) -> Void in
            textField.placeholder = "insert here"
            textField.delegate = self
        }
        let cancelAction = UIAlertAction(title: "cancel", style: UIAlertAction.Style.cancel) { (result : UIAlertAction) -> Void in
        }
        let okAction = UIAlertAction(title: "save", style: UIAlertAction.Style.default) { (result : UIAlertAction) -> Void in
            let newName = alertController.textFields![0].text! as String
            //Useless Stuff to Append items here [...]
            
            //If the item already exists then i call the following function which is inside of an if statement...
            self.errorInCreation()
            
        }
        alertController.addAction(cancelAction)
        alertController.addAction(okAction)
        self.present(alertController, animated: true, completion: nil)
        
    }

func errorInCreation(){
        let alertController = UIAlertController(title:"Insert a new word", message: nil, preferredStyle: UIAlertController.Style.alert)
        alertController.addTextField { (textField : UITextField) -> Void in
            textField.placeholder = "The word already exists. Insert a new one"
            textField.attributedPlaceholder = NSAttributedString(string: "The word already exists. Insert a new one",attributes: [NSAttributedString.Key.foregroundColor: UIColor.red])
            textField.delegate = self
        }
        let cancelAction = UIAlertAction(title: "cancel", style: UIAlertAction.Style.cancel) { (result : UIAlertAction) -> Void in
        }
        let okAction = UIAlertAction(title: "save", style: UIAlertAction.Style.default) { (result : UIAlertAction) -> Void in
            let newName = alertController.textFields![0].text! as String
            //Useless Stuff to Append items here [...]
            
            //If the item already exists then i call the following function which is inside of an if statement...
            self.errorInCreation()
        }
        alertController.addAction(cancelAction)
        alertController.addAction(okAction)
        self.present(alertController, animated: true, completion: nil)
    }

这应该会显示一个新的 alertViewController,直到用户插入一个新词。然而这并没有发生。当我按下保存按钮时,警报关闭。

我试图编辑当前警报,但实际上不可能。 如何清除插入的文本,更改占位符名称并让用户插入新词?

我发现这个人和我有同样的问题,但是这里指出的解决方案没有用。 Presenting new AlertViewController after dismissing the previous AlertViewController - Swift

解决方法其实很简单:不要使用 UIAlertController。它只是一个专门呈现的视图控制器,您无法控制它的外观或行为;特别是,当点击按钮时它会消失,这不是你想要的。因此,只需使用自定义呈现的视图控制器,您就可以在其中获得所需的控件。