#swift #uitableview #swift5
Вопрос:
Сценарий (Важно):
Я пытаюсь добиться того, чтобы, допустим, было 5 строк, пользователь мог ранжировать их от 1 до 5, выбрав сначала наиболее предпочтительную строку. Допустим, первая строка, выбранная в indexPath.row
2, поэтому в эту строку будет добавлен значок с рангом 1, а затем допустим, что следующий выбор пользователя-номер 4, поэтому рядом с этой строкой будет добавлен ранг 2.
Если пользователь отменяет выбор строки, ранг остальных строк также должен быть обновлен.
Как я это делаю:
Я объявил эти переменные:
var rankValue = 0
var accesoryBadge = UILabel()
Затем в viewDidLoad
я
self.tableView.allowsMultipleSelection = true
accesoryBadge.textColor = .white
accesoryBadge.backgroundColor = .systemPink
accesoryBadge.textAlignment = NSTextAlignment.center
accesoryBadge.layer.cornerRadius = 10
accesoryBadge.clipsToBounds = true
Внутри didSelectRowAt
того, что я
rankValue = rankValue 1
accesoryBadge.text = String(rankValue)
accesoryBadge.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none)
if let cell = tableView.cellForRow(at: indexPath) {
cell.accessoryView = accesoryBadge
}
и, наконец, у didDeselectRowAt
меня есть
rankValue = rankValue - 1
tableView.deselectRow(at: indexPath, animated: true)
if let cell = tableView.cellForRow(at: indexPath) {
cell.accessoryView = .none
self.tableView.reloadData()
}
Проблемы:
Когда я выбираю первую строку, я вижу, что она успешно добавляет значок со значением 1 рядом с выбранным значком. Но когда я выбираю вторую ячейку, приложение просто останавливается. Как будто приложение перестает реагировать. Я не могу выбрать или отменить выбор элементов.
Что касается ответа, я был бы очень признателен, если бы общий сценарий был учтен.