У меня есть NSTabView внутри моего пользовательского NSView, который используется в качестве прототипа для NSCollectionView. Во второй вкладке у меня есть кнопка NSButton и объекты NSImageView.Передача значений из пользовательского NSView в NSCollectionViewItem
NSButton - кнопка «Обзор», которая запускает NSOpenPanel.
Я подключил селектор кнопки на IBAction в MyCustomView, который выполняет следующие действия:
// 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» следы «нуль» в консоли, даже если я подключил его как IBOutlet в Interface Builder , Не могли бы вы объяснить, почему? Как мне это сделать? Мне также нужно передать значение «fileURL» в «presentObject» в моем объекте NSCollectionViewItem, но я не знаю, как получить доступ к этому отсюда?