Использование кнопки для добавления текста к значению текстового поля, содержащегося в UITableViewcell - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу получить UIButton для добавления значения заголовка к выбранному в данный момент UITextField, содержащемуся в UITableViewCell.

У меня есть ряд кнопок с общими фразами, которыепользователь может использовать, например, "#CompanyName".Я установил общие фразы в качестве заголовка кнопок.Чуть ниже ряда кнопок у меня есть UITableView с ячейками, каждая из которых содержит несколько статических меток и текстовое поле.Я хочу позволить пользователю нажать одну из кнопок над табличным представлением, чтобы добавить значение заголовка кнопки в текстовое поле, которое в данный момент редактируется.

Мне удалось сделать это в качестве теста, используя текстовое поле и кнопки, находящиеся вне табличного представления, используя:

    @IBAction func buttonAction(_ sender: AnyObject) {
        buttonTitle = sender.titleLabel!.text!
        testOutlet.text = "\(testOutlet.text!) \(buttonTitle)"

Теперь мой вопрос, как бы я сделал этот "testOutlet.text "динамический, поэтому он знает только текстовое поле, которое редактируется.Я посмотрел на textFieldDidBeginEditing, но не смог понять.Я также попытался определить indexPath.

1 Ответ

0 голосов
/ 19 февраля 2019

Вам нужно знать, какой UITextField редактируется в данный момент.Для этого вы можете использовать следующий код:

class ViewController: UIViewController {
    // code ...

    @IBAction func buttonAction(_ sender: AnyObject) {
        buttonTitle = sender.titleLabel!.text!
        oActiveTextField?.text = "\(oActiveTextField?.text ?? "") \(buttonTitle)"
    }

    fileprivate var oActiveTextField: UITextField?
}

extension ViewController: UITableViewDataSource {
    // code ...

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: yourIdentifier, for: indexPath) as! YourTableViewCell
        cell.textField.delegate = self
        // TODO: configure cell
        return cell
    }
}

extension ViewController: UITextFieldDelegate {

    func textFieldDidBeginEditing(_ textField: UITextField) {
        oActiveTextField = textField
    }

    func textFieldDidEndEditing(_ textField: UITextField) {
        oActiveTextField = nil
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...