У меня есть UITableView с пользовательским UITableViewCell. В каждой ячейке есть кнопка, и я бы хотел, чтобы при нажатии одной кнопки все кнопки были не щелкаемыми. Легко получить доступ к ячейке, в которой находится нажатая кнопка, но мне также нужно получить доступ ко всем остальным ячейкам, чтобы сделать их кнопку не щелкающей.
Поэтому, когда кнопка нажимается внутри ячейки, мне нужно просмотреть вседругие ячейки ... Я нашел способ пройти вверх по иерархии, чтобы в методе действия кнопки я поднялся на один уровень выше, чтобы получить доступ к UITableView, и оттуда я могу получить доступ к каждой ячейке, и из каждой ячейки я могу получить доступ к их кнопкеи отредактируйте свойство isUserInteractionEnabled. Однако это не очень хорошая практика, чтобы сделать ячейку доступной к TableView, а затем ко всем другим ячейкам.
class AnswerCell2: UITableViewCell {
let answerTextButton: UIButton = {
let answerButton = UIButton()
answerButton.setTitle("initial text", for: .normal)
return answerButton
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String!) {
answerTextButton.addTarget(self, action: #selector(answerClicked), for: .touchUpInside)
}
@objc func answerClicked(sender: UIButton) {
// HERE I CAN ACCESS EASILY THE CELL WHERE THE BUTTON WAS CLICKED
// AND THEN USE THE TABLEVIEW TO ACCESS OTHER CELLS AND THEIR BUTTONS
// BUT THIS IS NOT A NICE WAY
}
Итак, у меня есть решение, как я уже сказал, но я бы хотел больше приятногоспособ сделать это. Все решения, которые я нахожу в Интернете, связаны с тем, как получить доступ к ячейке, в которой была нажата кнопка, но это просто, мне нужно получить доступ к другим ячейкам, и я бы хотел, по возможности, избегать этого в методе действия answerClicked (). так что код остается чистым.
Спасибо.