所以我的应用程序委托中有两个自定义NSView的实例

@property (assign) IBOutlet SYDropView *sourceView;
@property (assign) IBOutlet SYDropView *destView;


SYDropView有一个currPath ivar,当在其上放置文件夹时,它会更新,这很好用。

现在,如果我想做一些额外的事情,例如更新标签,这取决于更改了SYDropView,如何区分实例以检查sourceView或destView是否已更改?我需要知道更改了哪个标签,以便可以更新适当的标签。我是否可以在发送时将发件人传递给应用程序委托,并对此进行处理?

最佳答案

我建议使用这样的方法编写一个协议,为您的SYDropView定义一个委托:

@protocol SYDropViewDelegate

- (void) folderDroppedOnView: (SYDropView*) view;

@end


删除文件夹后,应从SYDropView调用此方法,以便可以识别哪个视图注意到了该事件。

要轻松设置视图的委托,您可以覆盖设置器:

- (void) setSourceView: (SYDropView*) sourceView {
    _sourceView= sourceView;
    _sourceView.delegate= self;
}


setDestView相同。

关于objective-c - 在每个实例的基础上自定义NSView drop事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20733347/

10-11 16:40