получить значение метки при изменении значения пользовательского переключателя внутри ячейки табличного представления swift - PullRequest
0 голосов
/ 15 октября 2019

У меня есть UITableviewcell с меткой и переключателем.

enter image description here

метка ячейки имеет динамические значения в зависимости от ситуации.

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

 switchView.tag = indexPath.row // for detect which row switch Changed
 switchView.addTarget(self, action: #selector(self.switchChanged(_:)), for: .valueChanged)

//switch value change function
@objc func switchChanged(_ sender : UISwitch!){

        print("table row switch Changed \(sender.tag)")
       //looking for label text on this tag 
    }

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

1 Ответ

1 голос
/ 15 октября 2019

объявляем следующую переменную замыкания в UItableViewCell

var returnBlock: ((String?)-> Void)?

, а в методе switch просто вызываем ее с labelObj.text

    @objc func switchChanged(_ sender : UISwitch!){
             returnBlock?(labelObject.text)
        }

В TableViewController - метод CellForRowAtIndexPath, где вы возвращаете ячейку перед записьюследующий код

    cell.returnBlock = { labelText in 
               if let value = labelText {
                print(value)
               }
     }

Есть много способов сделать, но я думаю, что это правильный путь.

По умолчанию UITableViewCell

  @objc func switchChanged(_ sender : UISwitch!){
        if let cellObj =  tableView.cellForRow(at: IndexPath(row: sender.tag, section: 0)) as? UITableViewCell {
     print(\(cellObj.labelObj.text ?? ""))
    }
   }
...