我对此完全陌生,但这里是: 我想在我的应用程序中按下一个按钮,并显示图像(我计划从相机中读取它,但首先,我将打开一个 .TIF 文件。)但是,在界面生成器中,我可以在 NSObject 对象中创建按钮,但文献听起来好像我需要创建一个 NSView 对象来显示文件。问题是,当我这样做时, NSObject 对象似乎没有与 NSView 对象对话。我正在尝试做类似的事情:
NSString *inFilePath;
inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
NSImage *TestImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
[MyView setImage:TestImage];
这里,MyView是NSView对象。我收到警告称 MyView 可能不会响应 setImage。我尝试在 NSObject 对象中定义 IBOutlet,尽管我可以在界面生成器中连接它,但控制台给出了错误:
无法识别的选择器发送到类 0x1e080
因此,目前尚不清楚下一步是什么。有没有一种简单的方法可以让两个不同的对象相互“交谈”? 谢谢
最佳答案
您需要一个 NSImageView
对象。在 Interface Builder 库中,这称为图像井,但您可以对其进行配置,使其没有边框。
NSImageView
是 NSView
的子类,针对显示图像进行了优化。
在你的头文件(.h)中,你应该有这样的内容:
@interface MyController : NSObject
{
//this declares an outlet so you can hook up the
//image view in Interface Builder
IBOutlet NSImageView* imageView;
}
@end
在您的实现 (.m) 文件中:
@implementation MyController
//called once the nib is loaded and all outlets are available
- (void)awakeFromNib
{
NSString *inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
NSImage *testImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
#if !__has_feature(objc_arc)
[testImage autorelease];
#endif
//imageView is your outlet
[imageView setImage:testImage];
}
@end
在 Interface Builder 中,您应该连接类的 imageView
导出,以指向您放置在 View 上的 NSImageView
。
关于cocoa - 在 cocoa 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237703/