我和我的兄弟通过学习 Apple 制作的开始开发 iOS 应用程序 (Swift) 教程,开始使用 Swift 制作我们的 iOS 应用程序。在教程的开头,它让我们使用委托(delegate)来允许按钮将标签的文本更改为文本字段中的文本。我们不确定为什么需要使用委托(delegate)并让类自己进行数据访问。我们做了很多研究,似乎使用委托(delegate)的唯一原因是当您需要将数据返回给以前的 View Controller 时。为什么需要在单个 View Controller 中使用委托(delegate)?谢谢。
delegate 是一个对象,当另一个对象遇到程序中的事件时,该对象委托(delegate)另一个对象或与之协调。委托(delegate)对象通常是响应者对象——即从 AppKit 中的 NSResponder 或 UIKit 中的 UIResponder 继承的对象——响应用户事件。委托(delegate)是一个对象,该对象被委托(delegate)控制该事件的用户界面,或者至少被要求以特定于应用程序的方式解释该事件。
委托(delegate)方法具有常规形式。它们以执行委托(delegate)的 AppKit 或 UIKit 对象的名称开始——应用程序、窗口、控件等;这个名字是小写的,没有“NS”或“UI”前缀。通常(但不总是)这个对象名称后跟一个助动词,指示所报告事件的时间状态。换句话说,这个动词表示事件是即将发生(“应该”或“将要”)还是刚刚发生(“已经发生”或“已经发生”)。这种时间上的区别有助于对需要返回值的消息和不需要返回值的消息进行分类。
您必须将框架可用委托(delegate)与您可以创建的框架类协议(protocol)/委托(delegate)区分开来:
成为框架类的委托(delegate)
框架类或任何其他实现委托(delegate)的类声明委托(delegate)属性和协议(protocol)(通常是正式协议(protocol))。该协议(protocol)列出了委托(delegate)实现的必需和可选方法。要使类的实例充当框架对象的委托(delegate),它必须执行以下操作:
- 将您的对象设置为委托(delegate)人(通过将其分配给委托(delegate)人
属性(property))。您可以以编程方式或通过界面执行此操作
build 者。
- 如果协议(protocol)是正式的,声明你的类(class)采用
类定义中的协议(protocol)。
例子:
class myClass: NSObject,myCustomDelegate {
...
}
也在这个SO thread你可以找到一些例子..
- 实现协议(protocol)的所有必需方法和任何可选方法
您想参与的方法。
苹果官方Source