【发布时间】:2015-04-22 18:03:29
【问题描述】:
当按下按钮时,我试图在另一个视图控制器中更改标签的文本。以下是我设置委托的方式:
在import UIKit下的FirstViewController中
@objc protocol MyDelegate{
optional func makeScore()
}
在class FirstViewController: UIViewController下的FirstViewController
var delegate:MyDelegate?
按下按钮时在 FirstViewController 中
delegate?.makeScore!()
在 SecondViewController 中(makeScore() 所在的位置)
class SecondViewController: UIViewController, MyDelegate
SecondViewController 中的makeScore() 方法
func makeScore() {
println("worked")
}
按下按钮时不会记录任何内容。我很确定我正确设置了代表和协议。有什么遗漏吗?
注意:FirstViewController 和 SecondViewController 没有通过 segues 连接。他们都在scrollView。
【问题讨论】:
-
你在哪里分配
delegate属性? -
就在我的
@IBOutlets和viewDidLoad覆盖之间。 -
这声明了委托,但您需要在某处为其分配一个
SecondViewController实例以使该通信正常工作。 -
我对 viewController 的流程感到困惑。您是否尝试将
SecondViewController推到FirstViewController之上,并将SecondViewControler的代表分配给FirstViewController?如果是这样,则需要对您的委托声明进行一些更改 -
FirstViewController是一个带有 ScrollView 的 ViewController。SecondViewController是一个 ViewController,它被细分到该 ScrollView 中。
标签: ios xcode swift delegates protocols