我无法快速理解代表的用途
我试图在任何可能的站点中搜索代表的含义及其用途,但我无法完全理解他们的含义。
f.e。在此代码中
extension SignUpViewController : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
}
}
分配给ViewController的委托应该做什么?以及我该如何使用它们?
答案 0 :(得分:3)
我喜欢类比思考:
会有一个“ 发言人”和一个“ 听众”。
UIImagePickerController
已经配置为在事件发生时“ 说”,因此当发生didFinishPickingMediaWithInfo
之类的事件时,它会“ 说”。 / p>
在您的情况下,UIViewController
应该是“ 侦听器”,该配置为:
picker.delegate = self
,假设UIViewController
实现了UIImagePickerControllerDelegate
。
换句话说,当UIViewController
“ 说话”时,将picker
设为“ 收听者”。
选择者“ 说”的所有内容都将通过UIImagePickerControllerDelegate
被“ 收听”的人“ 收听”
注意:这是非常肤浅和抽象的,当然它不止于此,但是我正在考虑OP的情况。
答案 1 :(得分:2)
delgate是2种数据类型(通常为vcs)之间的连接,它们使其中一种能够通过从接收者所遵循的协议(在您设置的示例中)中调用一种方法,将数据发送到另一种数据
let picker = UIImagePickerController()
picker.delegate = self // connection here
在用户选择照片/视频之后,接收者是SignUpViewController
实例,发送者是UIImagePickerController
实例,选择者调用didFinishPickingMediaWithInfo
方法中的一种UIImagePickerControllerDelegate
,这在
class UIImagePickerController { // look for it in framework visible part
weak var delegate:UIImagePickerControllerDelegate?
....
delegate?.imagePickerController(self,didFinishPickingMediaWithInfo:info)
}