Обновить метку при нажатии UITableViewCell - PullRequest
0 голосов
/ 03 мая 2019

У меня есть табличное представление со многими ячейками табличного представления. Когда пользователь нажимает на ячейку, я хочу обновить текст метки ячейки.

Вот мой класс контроллера представления таблицы:

class MyTableViewController: UITableViewController {
    var data = [Data]()

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self

        // Here I fetch and populate the data list
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellIdentifier = "MyTableViewCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MyTableViewCell else {
            fatalError("The dequeued cell is not an instance of MyTableViewCell.")
        }

        let cellData = data[indexPath.row]

        cell.initialize(data: cellData)

        return cell
    }
}

А вот мой класс представления таблицы:

class MyTableViewCell: UITableViewCell {
    var data: Data?

    @IBOutlet weak var nameLabel: UILabel!

    func initialize(data: Data) {
        self.data = data

        if let cellName = data.name {
            nameLabel.text = cellName
        }
    }
}

Как я могу изменить текст nameLabel выше (на "Нажатие"), когда пользователь нажимает на ячейку табличного представления?

1 Ответ

1 голос
/ 03 мая 2019

Нет никаких сомнений в том, что вы могли бы справиться с этим, но я бы предложил следующее:

Реализация методов UITableViewDelegate tableView(_:didSelectRowAt:) и tableView(_:didDeselectRowAt:).Добавьте selected bool к модели данных для ячеек в вашем табличном представлении и обновите состояние этого bool, когда ячейки выбраны / отменены.

Затем измените ваш метод cellForRow(at:), чтобы он использовалselected флаг, чтобы решить, что показывать в вашем ярлыке.

Наконец, ваши методы tableView(_:didSelectRowAt:) и tableView(_:didDeselectRowAt:) сообщают табличному представлению о перезагрузке новой выбранной / отмененной ячейки.

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