Я хотел бы расширить функциональность делегата, который я использовал, чтобы принять два разных типа в качестве второго параметра. Когда я пытаюсь добавить перегруженный метод, я получаю две ошибки:Есть ли способ перегрузить метод в протоколе?
Так что мой вопрос: Есть ли способ перегрузить метод в протоколе быстрым, чтобы разрешить разные параметры?
Ошибка 1
Тип 'ViewController' не соответствует протоколу 'myCellDelegate'
Error 2
Невозможно присвоить значение типа ' ViewController 'для значения типа' myCellDelegate? '
myCellDelegate.swift
protocol myCellDelegate {
func didChangeState(# sender: SettingCell, isOn: Bool)
func didChangeState(# sender: SettingCell, time: Int) // error
}
(в ViewController.Swift)
class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate, myCellDelegate {
cellForRowAtIndexPath
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CustomSettingCell") as! SettingCell
let section = sectionNames[0]
let logItem = logItems[indexPath.row]
cell.settingsLabel?.text = logItem.settingLabel
cell.settingsSwitch.on = logItem.switchState
cell.cellDelegate = self
return cell
}
Использование
func didChangeState(#sender: SettingCell, isOn: Bool) {
...
}
Ответ на вопрос «да», абсолютно. Но из тела вашего вопроса, похоже, вы хотите сделать немного больше, и проблема заключается в том, как вы это делаете. Можете ли вы разместить еще несколько примеров кода (т.как вы реализуете класс и как вы передаете делегат) –
обновлен, чтобы показать больше кода –
Вы также внедрили 'func didChangeState (# sender: SettingCell, time: Int)' inside 'ViewController'? –