Как обновить цвет метки в UICollectionViewCell, когда выбрана кнопка класса UIViewController - PullRequest
0 голосов
/ 04 июля 2018

UIView

Как изменить цвет метки внутри UICollectionViewCell вверху (например, Q1), когда выбрана кнопка под TextField?

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

Пожалуйста, смотрите прикрепленную картинку выше

Я использовал UIViewController в качестве делегата / источника данных для UICollectionView

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Если я правильно понимаю вашу ситуацию, вам не нужно использовать прокрутку в представлении коллекции, и вам не нужно многократное использование ячеек. Так что вам нужна статическая структура. Для этой ситуации лучше использовать UITableView со статическими ячейками. Вы можете установить IBOutlet для каждой ячейки, а также для каждого из элементов внутри ваших ячеек в свой основной View Controller. Затем внутри TouchUpInside Действие вашей конкретной кнопки задайте цвет для вашей метки.

0 голосов
/ 04 июля 2018

Обновление UICollectionViewCell / UITableViewCell наиболее предпочтительно при звонке collectionView.reloadItems(at: [IndexPath])

Полагаю, у вас есть последовательность вопросов и несколько правильных / неправильных флагов. Таким образом, у вас должен быть обработчик выбора кнопок и метод создания ячеек

@objc private func onSomeButton(_ sender: UIButton) {
    let questionNumber: Int = 999
    self.markAnswer(correct: true, atIndex: questionNumber)
    self.collectionView.reloadItems(at: [IndexPath(item: questionNumber, section: 0)])
}

И тогда этот вызов сработает для перезагрузки этой ячейки

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: self.someDefaultRequseId, for: IndexPath)
    cell.label.textColor = self.isAnswerCorrect(at: indexPath.item) ? .white : .red
}
...