Хорошо, поэтому я новичок, пытающийся написать практическое приложение, где вы нажимаете кнопку, появляется NSOpenPanel
, вы выбираете файл изображения, и изображение отображается в NSImageView
,Настройка NSImage NSImageView из NSURL
У меня открытая панель работает нормально, и она возвращает NSArray
из NSURLs
. Я избегал использовать пути имен файлов, поскольку документы Apple заявили, что они обесценились. Затем я попытаюсь сделать объект NSImage
с помощью initWithContentsOfURL
, а затем попробуйте setImage из NSImageView
на новое изображение.
Вот что я думаю, соответствующие части реализации ...
- (IBAction)openImage:(NSButton *)sender {
NSLog(@"%@ was clicked", sender);
NSOpenPanel *panel = [[NSOpenPanel alloc] init];
if ([panel runModal] == NSModalResponseOK)
{
NSArray* selectedFile = [panel URLs];
NSLog(@"%@ was selected", selectedFile[0]);
NSImage *theImage = [[NSImage alloc] initWithContentsOfURL:selectedFile[0]];
[imageViewer setImage:theImage];
}
}
И из заголовка:
@property (weak) IBOutlet NSImageView *imageViewer;
- (IBAction)openImage:(NSButton *)sender;
@end
Когда я пытаюсь установить изображение, Xcode говорит, что есть imageViewer
есть необъявленный, и хочет исправить его до _imageViewer
. Я пробовал следовать его советам и запускал его, но затем приложение просто падает, как только я выбираю файл с открытой панели, поэтому что-то явно все еще не так.
Строки NSLog
показывают, что нажата кнопка, и отображается правильный URL выбранного файла, но у меня возникают проблемы с настройкой NSImageView
. Это, наверное, что-то действительно простое, но я не могу понять это.
Используйте self.imageViewer или используйте _imageViewer. Я предлагаю использовать self.imageViewer, поскольку он использует setter. –