Как постоянно отображать введенные данные из UITextField в Label?

Я пытаюсь создать функцию, в которой, когда пользователь вводит текст в UITextField, в тот же момент метка показывает введенный текст.

Как я мог это сделать?

Нравиться:


textField.text = "10"

Label.text = "\(textField.text) smthg" //. (10 smthg)

textField.text = "10.56"

Label.text = "\(textField.text) smthg" //. (10.56 smthg)

person Ivan Kisin    schedule 01.03.2018    source источник
comment
вы можете обновить метку в этом методе делегата текстового поля func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {}   -  person Keerthaprasanth Ravikumar    schedule 01.03.2018
comment
Возможный дубликат Как проверить, когда изменяется UITextField?   -  person Alok Nair    schedule 01.03.2018


Ответы (3)


Реализуйте UITextFieldDelegate и установите для него свойство textField.delegate. Из UITextFieldDelegate реализуйте метод обратного вызова shouldChangeCharactersIn, который вызывается каждый раз, когда пользователь пытается изменить ввод в текстовом поле:

class MyViewController: UIViewController {

    ...

    func viewDidLoad() {
        super.viewDidLoad()

        // set the textField's delegate to self
        textField.delegate = self
    }

}

extension MyViewController: UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        // to be always updated, you cannot use textField.text directly, because after this method gets called, the textField.text will be changed
        let newStringInTextField = (textField.text as NSString?)?.replacingCharacters(in: range, with: string)
        yourLabel.text = "\(newStringInTextField) smthg"
        return true
    }
}

Используя аргументы функции, вы можете получить строку, которая появится в textField, и вы можете установить ее как текст в yourLabel.

person Milan Nosáľ    schedule 01.03.2018

Вам необходимо реализовать метод делегата textfield shouldChangeCharactersIn, он будет вызываться, когда пользователь начнет печатать, удалить символ из текстового поля, нажать кнопку очистки, которая появится справа от текстового поля, когда в текстовом поле есть текст.

person Mahendra    schedule 01.03.2018

Вы можете использовать Editing Changed Действие для этого textField

@IBAction func changeText(_ sender: UITextField) {

     Label.text = "\(textField.text) smthg"
}
person Kaushik Makwana    schedule 01.03.2018