Передача данных из ячейки xib в viewcontroller - PullRequest
0 голосов
/ 09 февраля 2019

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

У меня есть контроллер представления (подключенный к контроллеру навигации)в раскадровке, в которой есть табличное представление, и я использую файл xib для своей пользовательской ячейки.

Это мои два класса:

Класс ViewController - содержит представление таблицы - мой источник данных- загружает данные в ячейку моего табличного представления xib - на панели навигации есть кнопка «Оценка»

Класс ячейки табличного представления - имеет выход для метки, который отображает вопрос - имеет три выхода для кнопок, которые отображают варианты ответа - имеетдействие, которое изменяет цвет фона кнопки при нажатии

Загрузка данных вопросов и ответов в ячейку XIB работает нормально.

Когда пользователь нажимает кнопку «Оценка», я хочу сохранить текст titleLabel всех кнопок, которые пользователь нажал в массиве, но я не знаю, как это сделать.

1 Ответ

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

Типичным шаблоном для такого рода вещей является определение протокола делегата, который будет принимать события от ваших UITableViewCells, например нажатие кнопки.Делегат может отправлять информацию о том, какая ячейка и какая кнопка в какой ячейке была нажата, поэтому ваш TableView или ViewController может обновить свою модель представления, какая из кнопок была нажата во всем представлении.

class AnswerCellView: UITableViewCell {
    // ...

    weak var delegate: AnswerCellViewDelegate?

    // The methods here linked to your outlets should call the answerCellClicked on the delegate

    // ...
}

protocol AnswerCellViewDelegate {
    func answerCellClicked(answerCell: AnswerCellView, answerButton: UIButton)
}

// ...

class AnswerCellTableView: UITableViewDataSource, AnswerCellViewDelegate {
    // ...

    func answerCellClicked(answerCell: AnswerCellView, answer: UIButton) {
        // do the work to keep track of which buttons have been clicked
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var answerCell: AnswerCellView
        // construct your AnswerCellView, setting the delegate property on your cell to self
        // ...
        answerCell.delegate = self
        // ...
    }

    // ...
}

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