我有一个包含容纳视图的容器视图的VC。 = Root VC拥有tableview
我已经从tableview设置了一个委托到根VC,它检查屏幕是向上还是向下滚动,这样就可以了。
我现在要做的是在根VC 到表视图之间设置一个委托。当在根VC中单击按钮时,我想在表视图中触发一个函数。
这将使viewcontrollers彼此实现委托 - 这是一个问题吗?
例如:
class RootVC, tableViewDelegate
class Tableview, RootVCDelegate
我的代表看起来像这样:
protocol RootVCDelegate: class {
func RootVCDidTouchGrid(controller: RootViewController)
}
class rootvc { ...
weak var delegate: RootVCDelegate?
@IBAction func gridButtonDidTouch(sender: AnyObject) {
delegate?.RootVCDidTouchGrid(self)
}
然后在表格视图中:
class tableview, RootVCDelegate {..
func RootVCDidTouchGrid(controller: RootViewController) {
println("touched!")
}
那么为什么永远不会println("touched!")
被解雇?
由于
答案 0 :(得分:0)
请在view didload中定义委托值:
delegate = self
答案 1 :(得分:0)
您似乎忘了设置代理。只需在delegate = self
viewDidLoad
即可
答案 2 :(得分:0)
RootVCDelegate
RootViewController
类型的(弱)委托属性
TableView
班级符合RootVCDelegate
delegate
RootViewController
属性分配给TableView
个实例。您错过了以下内容:
class tableview, RootVCDelegate {..
override func viewDidLoad() {
super.viewDidLoad()
rootViewController.delegate = self
}
func RootVCDidTouchGrid(controller: RootViewController) {
println("touched!")
}
}