1

我创建了一个自定义视图。它有一个委托,当它的某些按钮被按下时它会通知。

我将此添加到视图控制器的viewDidLoad

self.myCustomView.delegate=self;

到目前为止一切正常。

但这还不够酷。我想做表格视图样式,我可以直接从视图拖动到文件所有者,并且(ta-da!)它是自动设置的。

4

1 回答 1

2

IBOutlet关键字添加到delegate类的属性中:

@property (nonatomic, assign) IBOutlet id<MyViewDelegate> delegate;

IBOutlet关键字告诉 nib 编辑器让您与该属性建立连接。

你也可以这样说:

@property (nonatomic, assign) IBOutlet MyView *delegate;

然后 IB 将只允许您将其连接到MyView. 但是协议或 id 更灵活。

编辑:由于专注于 IB,丢了 1 分

你说:

我创建了一个自定义视图。它有一个委托,当它的某些按钮被按下时它会通知。

接收按钮事件是视图控制器的角色,但有时委托将用于对某些事件进行更细粒度的控制。

一般来说,不要为作为主窗口的视图上的按钮按下创建委托,在这种情况下,您应该在 ViewController 中处理按钮事件。按钮位于父视图上,它将沿响应者链向上转发事件(您仍然需要将它们连接到目标)。我并不是说你永远不应该使用委托模式来按下按钮,但是,按钮有自己的连接,可以根据需要通过拖放操作在 IB 中查看控制器。但是有像你这样的情况是完全有效的。

于 2012-10-21T03:26:39.423 回答