【发布时间】:2015-05-27 07:13:05
【问题描述】:
好的,所以我是一个新手,正在尝试编写一个练习应用程序,您单击一个按钮,出现NSOpenPanel,您选择一个图像文件,图像将显示在NSImageView 中。
我的打开面板工作正常,它返回 NSArray 或 NSURLs。我避免使用文件名路径,因为 Apple 文档说它已被折旧。然后我尝试使用initWithContentsOfURL 制作NSImage 对象,然后尝试将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。
标签: objective-c macos cocoa nsimage nsimageview