NSCollectionViewのプロトタイプとして使用される独自のNSView内にNSTabViewがあります。 2番目のタブにはNSButtonボタンとNSImageViewオブジェクトがあります。カスタムNSViewからNSCollectionViewItemへの値の受け渡し
NSButtonはNSOpenPanelをトリガーする「参照」ボタンです。
私は次のことを実行MyCustomViewでIBActionにボタンのセレクタを接続している:私はこれを実行すると
// MyView.h
@interface MyView : NSView
{
IBOutlet NSTabView *tabView;
IBOutlet NSImageView *myImageView;
IBOutlet NSButton *browseButton;
}
-(IBAction)openBrowseDialog:(id)sender;
@end
// MyView.m
-(IBAction)openBrowseDialog:(id)sender
{
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:NO];
[openDlg setAllowsMultipleSelection:NO];
[openDlg setAllowedFileTypes:[NSArray arrayWithObjects:@"png", @"jpg", @"jpeg", @"gif", nil]];
if ([openDlg runModal] == NSOKButton)
{
NSArray* files = [openDlg URLs];
NSURL* fileURL = [files objectAtIndex:0];
NSData *imageData = [NSData dataWithContentsOfURL:fileURL];
if(imageData != nil)
{
NSImage *image = [[NSImage alloc] initWithData:imageData];
myImageView.image = image;
[image release];
}
}
}
「myImageViewは、」私は、Interface BuilderでIBOutletとして、それを接続していてもコンソールに「ヌル」をトレースし。理由を説明できますか?代わりにこれをどうすればいいですか?私はまた、NSCollectionViewItemオブジェクト内の "ファイルオブジェクト"の値を "fileURL"に渡す必要がありますが、ここからアクセスする方法はわかりません。