我按下按钮时尝试更改另一个视图控制器中的标签文字。以下是我设置代理的方式:
在import UIKit
@objc protocol MyDelegate{
optional func makeScore()
}
在class FirstViewController: UIViewController
var delegate:MyDelegate?
在按下按钮时在FirstViewController中
delegate?.makeScore!()
在SecondViewController中(makeScore()
所在的位置)
class SecondViewController: UIViewController, MyDelegate
SecondViewController中的makeScore()
方法
func makeScore() {
println("worked")
}
按下按钮时没有记录任何内容。我非常确定我正确设置了委托和协议。你看到什么遗失了吗?
注意:FirstViewController
和SecondViewController
未通过segues连接。他们都在scrollView
。
答案 0 :(得分:3)
我现在可以看到你以编程方式添加了第二个视图控制器:
theme()
只需添加一行,就像这样:
let vc6 = storyboard.instantiateViewControllerWithIdentifier("Second") as! SecondViewController
self.addChildViewController(vc6)
self.scrollView.addSubview(vc6.view)
修改强>
在一个侧节点上,我确信委托实际上是你尝试做的最好的方法。您可能最好只是对let vc6 = storyboard.instantiateViewControllerWithIdentifier("Second") as! SecondViewController
self.delegate = vc6
self.addChildViewController(vc6)
self.scrollView.addSubview(vc6.view)
进行全局引用,然后调用SecondViewController
。委托通常用于回调未包含在View Controller中的对象