如何更改uialertcontroller的文本字段内容?

时间:2019-08-05 22:53:14

标签: ios swift textfield uialertcontroller

我正在使用UIAlertController获得这样的名称变量;

enter image description here

在android中,当警报控制器弹出时,我的朋友可以将变量放入警报控制器;

enter image description here

他们可以将变量放在文本字段中并以它开头。

但是我不能,我试图

alertController.textFields?.first?.text = myNameVariable

但是没有用。

let alertController = UIAlertController(title: "Update Name", message: nil, preferredStyle: .alert)
            let confirmAction = UIAlertAction(title: "Update", style: .default) { (_) in
                if let txtField = alertController.textFields?.first, let text = txtField.text {
                    // operations
                    alertController.textFields?.first?.text = "Variable that i already have" // I want to change textfield content
                    print("Text==>" + text)
                }
            }
            let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }
            alertController.addTextField { (textField) in
                textField.placeholder = "name"
            }
            alertController.addAction(confirmAction)
            alertController.addAction(cancelAction)
            self.present(alertController, animated: true, completion: nil)
        }))

很抱歉,我上载Imgur的国家/地区禁止上传IBB而不是Imgur:/

1 个答案:

答案 0 :(得分:-1)

您需要先添加文本字段,然后才能访问它

这是一个例子

let alertController = UIAlertController(title: "Update Name", message: nil, preferredStyle: .alert)

alertController.addTextField { textField in
    textField.text = "Text goes here 1"
    textField.placeholder = "placeholder"
    textField.tag = 0
}

alertController.addTextField { textField in
    textField.text = "Text goes here 2"
    textField.tag = 1
}

alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { _ in

    let firstTextField = alertController.textFields?.first
    let secondTextField = alertController.textFields?.last


    print(firstTextField?.text, secondTextField?.text)
}))

修改

感谢@rmaddy

问题代码的问题在于,它在试图消除警报后试图设置文本字段的文本。这毫无意义。一旦用户点击警告按钮之一,则该用户已经在文本字段中输入了文本。该代码应尝试从文本字段读取用户输入的文本,而不是尝试更新文本字段的文本。