NSImageView
アプリでファイルをドラッグ アンド ドロップするために使用 するサブクラスがあります。
これを行うために、 のサブクラスを作成し、 を XIB にNSImageView
ドラッグしNSImageView
、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
しかし、デバッグ時にデリゲートがまだnilであることだけが返ってきます。
私は何を間違っていますか?助けてくれてありがとう!!