delegate在iPhone中的确切含义是什么?它在UIViewController中如何实现?
委托模式就是Cocoa中的同义词。
一个代理并没有在UIViewController
中实现。不同类型的视图控制器会被分配一个代理来处理某些任务。其中最好的例子(如果我们谈论的是iPhone)是UITableViewDelegate
,它在发生特定表格相关事件时调用以执行某些任务。
代理用于在类/结构体的两个对象之间传递/通信数据以完成任务。 例如:考虑第一个VC(发送者或委托人或CEO),它向第二个VC(接收者或代表或秘书)发送机密数据。 这是通过使第二个VC符合一个协议来完成的。
protocol passDataDelegate { func passdata(data: String) }
class secondVC : UIViewController, passDataDelegate {
func passdata(data: String) {
print("CEO passed //(data)")
}
}
class firstVC : UIViewController {
var delegate : passDataDelegate?
}
let sender = firstVC()
let receiver = secondVC()
由于接收器符合协议passDataDelegate
,因此它的类型为UIViewController
或passDataDelegate
,因为如果一个类符合协议,则其类的对象可以具有协议作为类型。
因此,将sender.delegate = receiver
分配给代表。
现在,我们的CEO(sender)可以通过其代理属性将数据传递给秘书(receiver),如下所示:
sender.delegate?.passdata("Confidential data")
Output: CEO passed Confidential data