У меня есть UITableView, в котором есть строки, которые включают в себя две кнопки UISwitch. Пока я не повышен до Xcode8 он работал со мной добавление протокола к контроллеру представления, как этотКак добавить событие в мой CustomCell в Swift3
protocol CustomCellDelegator {
func callSegueFromCell()
}
Затем я добавил следующее к моему CustomCell быстрому файлу, который обрабатывает выходные отверстия для моей пользовательской ячейки.
open class CustomTableViewCell: UITableViewCell {
var delegate:CustomCellDelegator!
@IBOutlet weak var uidLabel: UILabel!
@IBOutlet weak var stateLabel: UILabel!
@IBOutlet weak var operatedSwitch: UISwitch!
@IBOutlet weak var switchRTN: UISwitch!
override open func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
@IBAction func operatedSwitchChange() {
if operatedSwitch.isOn {
AppDelegate.myGlobalVars.gSwitchType = "OpsOn"
}
else {
AppDelegate.myGlobalVars.gSwitchType = "OpsOff"
}
if(self.delegate != nil){ //Just to be safe.
self.delegate.callSegueFromCell()
}
}
@IBAction func rtnSwitchChange() {
if switchRTN.isOn {
AppDelegate.myGlobalVars.gSwitchType = "RtnOn"
}
else {
AppDelegate.myGlobalVars.gSwitchType = "RtnOff"
}
if(self.delegate != nil){ //Just to be safe.
self.delegate.callSegueFromCell()
}
}
}
Пока я не модернизировал это работало и делегат всегда имел значение, теперь она всегда ноль и переход никогда не вызывается.
Что мне нужно делать по-другому, так как я обновился, чтобы снова работать?
Вы можете показать относительные части вашего View Controller, который содержит код, который устанавливает и соответствует делегату? – ezcoding
Я знаю, что мне нужно назначить делегата моей ячейке (cell.delegate =?) В cellForRowAtIndexPath, но я не могу заставить его работать как cell.delegate = CustomCellDelegator выдает ошибку, как это имеет тип CustomCellDelegator.protocol. Есть идеи? – user616076
См. Мой ответ ниже. Вы предоставляете другой класс или тип, соответствующий протоколу. Это должен быть экземпляр чего-то, чтобы вы могли выполнить с ним любой код. – ezcoding