我有一个NSImageView
子类,用于将文件拖放到我的应用程序中。
为此,我创建了一个子类NSImageView
并将其NSImageView
拖到我的 XIB 上,然后将 XIBNSImageView
对象的类设置为我的自定义子类。
一切都适用于拖放,我知道拖放后我有正确的文件。
当我想根据拖入的文件更新 MainViewController 上的文本字段时,问题就出现了。
我创建了以下子类和协议
#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
@protocol PDFDraggedIntoWell <NSObject>
@required
-(void)PDFDraggedIntoWellWithURL:(NSURL*) importedURL;
@end
@interface DragAndDropImageView : NSImageView
@property (strong) id <PDFDraggedIntoWell> delegate;
@end
然后在子类的实现中,我尝试调用委托方法
-(void) finishedDragginInFileWithURL:(NSURL*) importedURL{
if( self.delegate != nil && [ self.delegate respondsToSelector: @selector(PDFDraggedIntoWellWithURL:)]) {
[self.delegate performSelector:@selector(PDFDraggedIntoWellWithURL:) withObject:importedURL];
}
}
我遇到的问题是如何分配代表。从 XIB NSImageView 到我的 MainviewController 我连接了一个IBOutlet
@property (weak) IBOutlet DragAndDropImageView *draggedFileImageView;
我已经声明我的 ViewController 将接收委托
@interface MyMainUIViewController ()<PDFDraggedIntoWell>
实施了适当的方法
-(void) PDFDraggedIntoWellWithURL:(NSURL *)importedURL{ }
现在我已经尝试在各个地方将委托分配给自我(在viewDidLoad
- 由于视图正在加载到 XIB 中,因此不会被调用??)以及
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
但我得到的只是调试时委托仍然为零。
我究竟做错了什么?谢谢您的帮助!!