0
我想展開一個委託的功能,我一直在使用它來接受兩種不同的類型作爲第二個參數。當我嘗試添加重載的方法時,出現兩個錯誤:有沒有辦法在協議中重載方法?
所以我的問題是,有沒有一種方法可以在swift中重載協議中的某個方法以允許不同的參數?
錯誤1
類型 '的ViewController' 不符合協議 'myCellDelegate'
錯誤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) {
...
}
問題標題的答案是肯定的。但是從你的問題的角度來看,你似乎希望做更多的事情,而問題在於你如何去做。你能否發佈一些更多的示例代碼(即你如何實現這個類,以及你如何通過代理) –
已更新爲顯示更多代碼 –
你是否還在ViewController內部實現了'func didChangeState(#sender:SettingCell,time:Int)'? –