我创建了一个自定义视图。它有一个委托,当它的某些按钮被按下时它会通知。
我将此添加到视图控制器的viewDidLoad
:
self.myCustomView.delegate=self;
到目前为止一切正常。
但这还不够酷。我想做表格视图样式,我可以直接从视图拖动到文件所有者,并且(ta-da!)它是自动设置的。
我创建了一个自定义视图。它有一个委托,当它的某些按钮被按下时它会通知。
我将此添加到视图控制器的viewDidLoad
:
self.myCustomView.delegate=self;
到目前为止一切正常。
但这还不够酷。我想做表格视图样式,我可以直接从视图拖动到文件所有者,并且(ta-da!)它是自动设置的。
将IBOutlet
关键字添加到delegate
类的属性中:
@property (nonatomic, assign) IBOutlet id<MyViewDelegate> delegate;
该IBOutlet
关键字告诉 nib 编辑器让您与该属性建立连接。
你也可以这样说:
@property (nonatomic, assign) IBOutlet MyView *delegate;
然后 IB 将只允许您将其连接到MyView
. 但是协议或 id 更灵活。
编辑:由于专注于 IB,丢了 1 分
你说:
我创建了一个自定义视图。它有一个委托,当它的某些按钮被按下时它会通知。
接收按钮事件是视图控制器的角色,但有时委托将用于对某些事件进行更细粒度的控制。
一般来说,不要为作为主窗口的视图上的按钮按下创建委托,在这种情况下,您应该在 ViewController 中处理按钮事件。按钮位于父视图上,它将沿响应者链向上转发事件(您仍然需要将它们连接到目标)。我并不是说你永远不应该使用委托模式来按下按钮,但是,按钮有自己的连接,可以根据需要通过拖放操作在 IB 中查看控制器。但是有像你这样的情况是完全有效的。