Я хочу настроить видимость кнопки в другом классе. Я хочу, чтобы другая кнопка classakinew была активна, когда функция fetchDeviesNewDevice() вызывается в следующем коде.
Я пытался это сделать, но это не сработало в приведенном ниже коде.
class MainTableViewController: UITableViewController, UITabBarControllerDelegate, MiniTabBarDelegate {
@objc func fetchDeviesNewDevice(){
let mainTableVC3 = DeviceTableViewCell()
mainTableVC3.newdevicechipnumber = self.newdevicechipnumber.text
mainTableVC3.buttonaktif ()
.... } }
class DeviceTableViewCell: UITableViewCell {
@objc func buttonaktif (){
buttonNew.isHidden = false
}
lazy var buttonNew: UISwitch = {
let sw = UISwitch()
sw.translatesAutoresizingMaskIntoConstraints = false
sw.isOn = false
sw.isHidden = true
sw.addTarget(self, action: #selector(handleChangeEventStateNew), for: .valueChanged)
sw.addTarget(self , action: #selector(didPressNew), for: .valueChanged)
return sw
}()
}





ОТРЕДАКТИРОВАНО
в :
@objc func fetchDeviesNewDevice(){
let mainTableVC3 = DeviceTableViewCell()
mainTableVC3.newdevicechipnumber = self.newdevicechipnumber.text
mainTableVC3.buttonaktif ()
....
}
вместо :
mainTableVC3.buttonaktif ()
пытаться :
mainTableVC3.buttonNew.isHidden = false
yourTableView.reloadData()
дайте мне знать, если это сработало
Также вам нужно вызвать tableView.reloadData() после того, как вы скрыли UIButton, чтобы обновить ячейки.
Этот
let mainTableVC3 = DeviceTableViewCell()
создает новую ячейку, вам нужно добавить логику видимости внутри модели и перезагрузить таблицу
var hideBtn = false // default
@objc func fetchDeviesNewDevice(){
hideBtn = true / false
//reload the table / indexpath
}
Тогда внутри cellForRowAt делаем
let cell = ////
cell.buttonNew.isHidden = hideBtn
Вы уверены, что вызывается fetchDeviesNewDevice()?