【发布时间】:2012-03-25 16:31:28
【问题描述】:
我是 Objective-c 的新手,所以请多多包涵。我有一个从网络摄像头返回图片的类,我正在尝试将其显示到屏幕上。我将NSViewController 子类化以从相机类中获取图像并将其设置为实例NSImageView,并将NSViewController 的视图设置为NSImageView。我在 Interface Builder 中创建了一个自定义视图,将一个 NSViewController 对象拖到 MainMenu.xib 中,将它的类设置为 PhotoGrabberController,并控制从自定义视图中单击拖动到 PhotoGrabberController 以将其出口绑定设置为视图。 (我真的不知道这在幕后是如何运作的,对我来说这似乎很神奇)。屏幕上什么都没有显示,我一直在玩这个。
在 PhotoGrabberController.h 中
@interface PhotoGrabberController : NSViewController {
PhotoGrabber * grabber;
NSImageView* iView;
}
@property (nonatomic, retain) NSImageView* iView;
在 PhotoGrabberController.m 中
@implementation PhotoGrabberController
@synthesize iView,grabber;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void) awakeFromNib
{
self = [super init];
if (self) {
NSRect rect = NSMakeRect(10, 10, 200, 100);
iView = [[NSImageView alloc] initWithFrame:rect];
[iView setImageScaling:NSScaleToFit];
[iView setImage:[NSImage imageNamed:@"picture.png"]];
grabber = [[PhotoGrabber alloc] init];
grabber.delegate = (id)self;
//[grabber grabPhoto]; (This usually sets iView but I removed it and manually set iView to be an image from file above for simplicity)
[self setView:iView];
}
}
我曾尝试在 AppDelegate 的 applicationDidFinishLaunching 中放置一堆不同的东西,但现在它的设置方式我认为我不需要在其中放置任何东西。
问题
- 如何让主窗口显示图像?
- 可以使用 PhotoGrabberController.view 代替创建视图子类吗?
- 我对这里的工作原理的理解有什么问题?我花了很多时间试图弄清楚这一点,但一无所获。
- 您能否指导我找到一个我可以完全理解其工作原理的资源?我发现 Apple 文档太详细太厚了。我只是想了解窗口、视图和视图控制器是如何加载和交互的。
【问题讨论】:
标签: objective-c macos cocoa nsimageview nsviewcontroller