【发布时间】:2017-02-05 12:19:09
【问题描述】:
我正在制作一个使用一组向下钻取表的应用程序,每个表都有自己的 TableViewController,所以我的故事板设置了一个 MainViewController,它与一个 TableViewController (MainTable) 有一个 segue,而另一个 TableViewController 有一个segue (子表)。我创建了一个协议,现在我尝试将 SubTable 分配为委托人,将 MainTable 分配为委托人。我发现的所有解决方案仅在直接从委托类调用(或转入)委托时才有效,在这种情况下,您可以在 prepareForSegue 方法中使用SubTable.delegate = self,但如果调用 SubTable 则不起作用(创建)从委托类(MainView)中。抱歉,如果这令人困惑,我很乐意澄清其中任何一个。这是我想要的一个例子:
class MainViewController: UIViewController, delegate {
override func viewDidLoad() {
super.viewDidLoad()
SubTable.delegate = self //Doesn't work
}
func acceptData(data: String!) {
print(data)
}
}
SubTable.delegate = self 行不起作用,因为 SubTable 尚未创建,但如果我事先使用 let instance = SubTable() 和 instance.delegate = self 之类的东西创建它,那么它仍然不起作用,因为 segue从 MainTable 到 SubTable 创建一个新的、单独的 SubTable 实例。
protocol delegate {
func acceptData(data: String!)
}
class MainTable: UITableViewController {
}
class SubTable: UITableViewController {
var delegate: delegate?
func sendData() {
self.delegate?.acceptData(data: "some text")
}
}
【问题讨论】:
-
你在使用导航控制器吗?
-
您是否尝试过设置委托的自定义初始化程序?还是在 SubTable 中使用 parentViewController?
标签: ios swift delegates delegation