我在Swift中缠绕我的头绕着代表团遇到了麻烦。阅读了一些指南之后,我可以在两个ViewController之间设置代理,但我不了解它是如何工作的。在我的第一个视图控制器中,我有一个标签,显示在第二个视图控制器中输入的内容,其中包含文本字段和按钮(返回到第一个视图控制器)。这是第一个视图控制器代码:Swift代表团
@IBOutlet weak var labelText: UILabel!
func userDidEnterInformation(info: String) {
labelText.text = info;
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "transition"){
let secondVC: SecondViewController = segue.destinationViewController as! SecondViewController;
secondVC.delegate = self;
}
}
这里的第二个视图控制器代码:
protocol DataEnteredDelegate{
func userDidEnterInformation(info: String);
}
@IBOutlet weak var userText: UITextField!
var delegate: DataEnteredDelegate? = nil;
@IBAction func buttonPressed(sender: AnyObject) {
let information = userText.text!;
delegate!.userDidEnterInformation(information);
self.navigationController?.popToRootViewControllerAnimated(true);
}
我的理解是,在文本字段中的文本被存储在信息不断,那么调用该协议的userDidEnterInformation方法,该方法在第一个视图控制器中定义。此方法然后更改第一个视图控制器内的标签。事情是,我不确定prepareForSegue函数中发生了什么。具体来说,我不确定secondVC.delegate = self的用途是什么。
我很感激代表团的任何形式的明确。
顺便说一句,在Swift中,你可以在每行结尾处省略分号。这样你的代码看起来不那么混乱。 :-) – bio