У меня есть табличное представление. Я регистрирую Cell следующим образом:
tableView.register(TVCellElementProperties.self, forCellReuseIdentifier: cellId1)
Внутри TVCellElementProperties я вручную создал контроллер сегмента следующим образом:
let unitTypeSegmentedControl: UISegmentedControl = {
let types = ["Blue", "White"]
let sc = UISegmentedControl(items: types)
sc.selectedSegmentIndex = 0
sc.translatesAutoresizingMaskIntoConstraints = false
sc.tintColor = UIColor.darkBlue
sc.addTarget(self, action: #selector(handleUnitChange), for: .valueChanged)
return sc
}()
@objc func handleUnitChange() {
NotificationCenter.default.post(name: .unitPicked, object: self)
}
Итак, я думаю, что когда я изменяю значение внутри SegmentController, он должен перенаправить меня к функции handleUnitChange()
внутри tableView я вставил эту строку в ViewDidLoad:
NotificationCenter.default.addObserver(self, selector: #selector(unitPicked), name: .unitPicked, object: nil)
Когда я запускаю приложение, функция **handleUnitChange** внутри tableviewCell не вызывается. Что я сделал не так? как я узнаю, что я нажал?
РЕДАКТИРОВАТЬ: я вызываю функцию setupView, которая отвечает за вставку контроллера сегмента внутри ячейки из init внутри UITableViewCell следующим образом:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.setupViews()
print("test init")
}
Итак, когда я запускаю его, setupView вызывается только один раз, поэтому ** handleUnitChange ** тоже вызывается только один раз. Я имею в виду, что когда приложение запущено и работает, и когда я нажимаю на контроллер сегмента внутри TableView, функция handleUnitChange больше не вызывается.
Я попытался вызвать функцию из Cell внутри CellForRow, но так же, как и выше. функция ** handleUnitChange ** не вызывается сверхурочно, я щелкнул внутри контроллера сегментов.
if let cell = tableView.dequeueReusableCell(withIdentifier: cellId1, for: indexPath) as? TVCellElementProperties {
//cell.backgroundColor = UIColor.rgb(red: 12, green: 122, blue: 12)
//cell.contentView.isUserInteractionEnabled = false
cell.setupViews()
//print("\(cell.handleUnitChange(sender: u))")
cell.handleUnitChange(sender: cell.unitTypeSegmentedControl)
return cell
}