TableView didSelect строка Проблема - PullRequest
0 голосов
/ 08 октября 2018

Таким образом, проблема заключается в том, что при нажатии на ячейку отображаются нужные данные, а при повторном нажатии на эту же ячейку (снова отображаются требуемые данные).

Но когда выбирается одна ячейка, и мы снова выбираем другую ячейку(затем отображаются данные о второй подключенной ячейке, но первая ячейка не выбрана).

Как мне решить эту проблему?

var selectedIndex = -1

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    UIView.animate(withDuration: 1) {
        self.labelViewHeightConstraint.constant = 60
        self.labelLeadingConstraint.constant = 136
        self.view.layoutIfNeeded()
    }


    let cell = tableView.cellForRow(at: indexPath) as! CustomCell
    if(selectedIndex == indexPath.row) {
        selectedIndex = -1
            print("deselect")
        UIView.animate(withDuration: 0.4) {

            cell.secondView.isHidden = true
            cell.firstView.backgroundColor =  UIColor(red: 0.8588, green: 0.84705, blue: 0.8745, alpha: 1.0)
        }
    } else {
        cell.secondView.isHidden = false
    }
        self.expandTableView.beginUpdates()
        //self.expandTableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic )
        self.expandTableView.endUpdates()
    }

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете заархивировать отдельный выбор, установив свойство tableView, например, belwo

tableView.allowsMultipleSelection = false

Это также можно сделать из Инспектора атрибутов enter image description here

Надеюсь, это поможет

0 голосов
/ 08 октября 2018

Вы должны отключить множественный выбор с помощью

self.tbl.allowsMultipleSelection = false

и включить одиночный выбор с помощью

self.tbl.allowsSelection = true

РЕДАКТИРОВАТЬ: -

, еслиВы хотите получить доступ к своим старым (выбранным ячейкам), вы должны сделать такой звонок,

    //first assign tag or indexPath in Cell,
    cell.tag = indexPath.row
    // or
    cell.indexPath = indexPath

    //then fetch like bellow, 
    let visibleCell = tableView.visibleCells.filter({$0.tag == self.selectedIndex})
    //or
    let visibleCell = tableView.visibleCells.filter({$0.indexPath.row == self.selectedIndex})

    //if you use ,
        let cell = tableView.cellForRow(at: indexPath) as! CustomCell
    //then it will get you new cell object.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...