我对此非常陌生,但这里有:我想在我的应用程序中按一个按钮,并有一个图像显示(我打算从相机读取它,但是首先,我将打开一个.TIF文件但是,在界面构建器中,我可以在NSObject对象中创建按钮,但是文献使我觉得我需要使NSView对象显示文件.问题是,当我这样做时,NSObject对象似乎与NSView对象无关.我想做的事情如下:
NSString *inFilePath;
inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
NSImage *TestImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
[MyView setImage:TestImage];
Run Code Online (Sandbox Code Playgroud)
在这里,MyView是NSView对象.我收到警告,MyView可能无法响应setImage.我试图在NSObject对象中定义一个IBOutlet,虽然我可以在界面构建器中连接它,但是控制台给了我错误:
无法识别的选择器发送到类0x1e080
因此,目前尚不清楚下一步是什么.是否有一种简单的方法可以让两个不同的对象相互"交谈"?谢谢
Rob*_*ger 15
你想要一个NSImageView对象.在Interface Builder库中,这称为Image Well,但您可以对其进行配置,使其没有边框.
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
Run Code Online (Sandbox Code Playgroud)
在您的实现(.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
Run Code Online (Sandbox Code Playgroud)
在Interface Builder中,您应该连接imageView类的出口以指向NSImageView您放置在视图中的内容.