我在我的项目中实施了side menu from github。我正在尝试在其中添加protocol
。这样,当选择cell
时,将调用另一个类(主viewController
)中的函数。这是我的代码:
tableView.swift
protocol menuTableViewProtocol {
func didSelectCell(SelectedCellNumber : Int)
}
var delegate : menuTableViewProtocol?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.delegate?.didSelectCell(indexPath.row)
}
mainVC.swift
class MainViewController: UIViewController, menuTableViewProtocol {
...
// Conforming to Protocal
func didSelectCell(SelectedCellNumber: Int)
{
switch SelectedCellNumber {
case 0:
println("0")
case 1:
println("1")
case 2:
println("2")
default:
println("0101010")
}
}
}
当我运行应用程序并选择一个单元格时,没有任何反应。 didSelectRowAtIndexpath
会被调用。 (我插入了println
并打印出来),但didSelectCell
(protocol function
)未被调用。我做错了什么,我该怎么做才能解决它?
答案 0 :(得分:0)
正如您在评论中提到的,您无法将委托设置为自己,并且您的类之间没有直接关系,因此您应该使用NSNotificationCenter而不是协议和委托。
// A类(mainVC.swift)
// Call from any method
NSNotificationCenter.defaultCenter().postNotificationName("MyNotification", object: nil, userInfo: ["selectedCellNumber" : indexPath.row]);
// B类(tableView.swift)
Categories
有关更多详细信息,您可以按照一些教程进行操作;